用ASPNET与SQL SERVER可是缘份最好了稍大的程序一般第一先考虑的是SQLSERVER只是一些很考虑经济的才使用ACCESS等了用SQL SERVER为了使数据库的效率更好一般都会才取存储过程因存储过程执行速度快并且可以实现一些高级的查询等功能比如传入一些数据参数但执行的SQL过程可能不同等
下面就来个例子建立一新的角色要求角色的名字不能重复以下是一存储过程
CREATE PROCEDURE sp_AccountRole_Create@CategoryID int
@RoleName nvarchar()
@Description nvarchar()
@RoleID int output
AS
DECLARE @Count int
查找是否有相同名称的记录
SELECT @Count = Count(RoleID) FROM Account_Role WHERE
RoleName = @RoleName
IF @Count =
INSERT INTO Account_Role
(CategoryID RoleName Description) valueS
(@CategoryID @RoleName @Description)
SET @RoleID = @@IDENTITY
RETURN GO
执行存储过程的C#过程
SqlConnection DbConnection = new SqlConnection(mConnectionString);
SqlCommand command = new SqlCommand( sp_AccountRole_Create DbConnection );
DbConnectionOpen(connectString);
// 废置SqlCommand的属性为存储过程commandCommandType = CommandTypeStoredProcedure;
commandParametersAdd(@CategoryID SqlDbTypeInt );
commandParametersAdd(@RoleName SqlDbTypeNVarChar );
commandParametersAdd(@Description SqlDbTypeNVarChar );
commandParametersAdd(@RoleID SqlDbTypeInt );
// 返回值commandParametersAdd(Returnvalue
SqlDbTypeInt
// Size
ParameterDirectionReturnvalue
false
// is nullable
// byte precision
// byte scale
stringEmpty
DataRowVersionDefault
null );
commandparameters[@CategoryID]value = permissionCategoryID;
commandparameters[@RoleName]value = permissionPermissionName;
commandparameters[@Description]value = permissionDescription;
// 可以返回新的ID值commandparameters[@RoleID]Direction = ParameterDirectionOutput;
int rowsAffected = commandExecuteNonQuery();
int result = commandparameters[Returnvalue]value;int newID = commandparameters[@RoleID]value;
功能挺强的吧可以得到三个值分别是行影响值存储过程返回值新的ID值