ASP.NET y SQL SERVER son los mejores. Para programas más grandes, SQL SERVER suele ser la primera opción. Sólo aquellos que son muy económicos utilizan ACCESS. Cuando se usa SQL SERVER, para hacer que la base de datos sea más eficiente, generalmente se usan procedimientos almacenados porque los procedimientos almacenados se ejecutan rápidamente y pueden implementar algunas consultas avanzadas y otras funciones. Por ejemplo, se pasan algunos parámetros de datos, pero los procedimientos SQL ejecutados pueden ser diferentes.
A continuación se muestra un ejemplo para crear una nueva función y exigir que el nombre de la función no se pueda repetir. El siguiente es un procedimiento almacenado.
CREAR PROCEDIMIENTO sp_AccountRole_Create@CategoríaID int,
@RoleName nvarchar(10),
@Descripción nvarchar(50),
@RoleID salida int
COMO
DECLARAR @Count int-- Buscar si hay registros con el mismo nombre
SELECCIONE @Count = Count(RoleID) DESDE Account_Role DONDE
Nombre de rol = @Nombre de rolSI @Contar = 0
INSERTAR EN Account_Role
(ID de categoría, nombre de función, descripción) valores
(@CategoryID, @RoleName, @Descripción)ESTABLECER @RoleID = @@IDENTIDAD
VOLVER 1
IR
SqlConnection DbConnection = new SqlConnection(mConnectionString);
Comando SqlCommand = nuevo SqlCommand ("sp_AccountRole_Create", DbConnection);
DbConnection.Open(connectString);
// Establece el atributo SqlCommand en un procedimiento almacenado
comando.CommandType = CommandType.StoredProcedure;comando.Parameters.Add("@CategoryID", SqlDbType.Int, 4);
comando.Parameters.Add("@RoleName", SqlDbType.NVarChar, 10);
comando.Parameters.Add("@Descripción", SqlDbType.NVarChar, 50);
comando.Parameters.Add("@RoleID", SqlDbType.Int, 4);
//valor de retorno
comando.Parameters.Add("Valor de retorno",
SqlDbType.Int,
4, // Tamaño
ParameterDirection.Valor de retorno,
falso, // es anulable
0, // precisión de bytes
0, // escala de bytes
cadena.vacia,
DataRowVersion.Predeterminado,
nulo );command.parameters["@CategoryID"].value = permiso.CategoryID;
command.parameters["@RoleName"].value = permiso.PermissionName;
comando.parametros["@Descripción"].valor = permiso.Descripción;
// Se puede devolver un nuevo valor de ID
command.parameters["@RoleID"].Direction = ParameterDirection.Output;int filasAffected = comando.ExecuteNonQuery();
int resultado = comando.parametros["Valor de retorno"].valor;
int nuevoID = comando.parameters["@RoleID"].valor;
La función es bastante poderosa. Puede obtener tres valores, a saber, el valor de impacto de la fila, el valor de retorno del procedimiento almacenado y el nuevo valor de ID.