ASP.NET e SQL SERVER são os melhores. Para programas maiores, o SQL SERVER geralmente é a primeira escolha. Somente aqueles que são muito econômicos usam o ACCESS. Ao usar o SQL SERVER, para tornar o banco de dados mais eficiente, geralmente são usados procedimentos armazenados porque os procedimentos armazenados são executados rapidamente e podem implementar algumas consultas avançadas e outras funções. Por exemplo, alguns parâmetros de dados são passados, mas os procedimentos SQL executados podem ser diferentes.
Aqui está um exemplo para criar uma nova função e exigir que o nome da função não possa ser repetido. A seguir está um procedimento armazenado.
CRIAR PROCEDIMENTO sp_AccountRole_Create@CategoryIDint,
@RoleName nvarchar(10),
@Descrição nvarchar(50),
Saída interna @RoleID
COMO
DECLARE @Contagem int-- Descubra se existem registros com o mesmo nome
SELECIONE @Count = Contagem(RoleID) FROM Account_Role WHERE
FunçãoNome = @RoleNomeSE @Contagem = 0
INSERIR EM Account_Role
(CategoryID, RoleName, Descrição) valoresS
(@CategoryID, @RoleName, @Descrição)DEFINIR @RoleID = @@IDENTIDADE
RETORNO 1
IR
SqlConnection DbConnection = new SqlConnection(mConnectionString);
Comando SqlCommand = novo SqlCommand("sp_AccountRole_Create", DbConnection);
DbConnection.Open(conectString);
// Define o atributo SqlCommand para um procedimento armazenado
command.CommandType = CommandType.StoredProcedure;command.Parameters.Add("@CategoryID", SqlDbType.Int, 4);
command.Parameters.Add("@RoleName", SqlDbType.NVarChar, 10);
command.Parameters.Add("@Descrição", SqlDbType.NVarChar, 50);
command.Parameters.Add("@RoleID", SqlDbType.Int, 4);
//valor de retorno
command.Parameters.Add("Valor de retorno",
SqlDbType.Int,
4, // Tamanho
ParâmetroDireção.Returnvalue,
falso, // é anulável
0, // precisão de bytes
0, // escala de bytes
string.Vazio,
DataRowVersion.Default,
nulo );command.parameters["@CategoryID"].value = permissão.CategoryID;
command.parameters["@RoleName"].value = permissão.PermissionName;
command.parameters["@Descrição"].value = permissão.Descrição;
// Novo valor de ID pode ser retornado
command.parameters["@RoleID"].Direction = ParameterDirection.Output;int rowsAffected = command.ExecuteNonQuery();
int resultado = comando.parâmetros["Valor de retorno"].valor;
int novoID = comando.parâmetros["@RoleID"].valor;
A função é bastante poderosa. Você pode obter três valores, ou seja, o valor do impacto da linha, o valor de retorno do procedimento armazenado e o novo valor do ID.