存储过程大全登录增删改查连接调用.docx
《存储过程大全登录增删改查连接调用.docx》由会员分享,可在线阅读,更多相关《存储过程大全登录增删改查连接调用.docx(27页珍藏版)》请在冰豆网上搜索。
存储过程大全登录增删改查连接调用
C#完整执行存储过程的代码加实例
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Data.SqlClient;
usingSystem.Collections;
usingSystem.Data;
namespaceTestWindow
{
publicclassStoreProcedure
{
//连接字符串。
privatestringconnectionString;
//存储过程名称。
privatestringstoreProcedureName;
privateconstStringconnString=
@"DataSource=localhost\SQLEXPRESS;InitialCatalog=Sample;IntegratedSecurity=True";
////
///初始化DataAccessHelper.StoreProceduer对象。
///
///数据库连接字符串。
publicStoreProcedure(stringconnectionString)
{
this.connectionString=connectionString;
}
////
///初始化DataAccessHelper.StoreProceduer对象。
///
///数据库连接字符串。
///存储过程名称。
publicStoreProcedure(stringstoreProcedureName,stringconnectionString)
{
this.connectionString=connectionString;
this.storeProcedureName=storeProcedureName;
}
////
///获取或设置存储过程名称。
///
publicstringStoreProcedureName
{
get{returnthis.storeProcedureName;}
set{this.storeProcedureName=value;}
}
////
///执行操作类(Insert/Delete/Update)存储过程。
///
///传递给存储过程的参数值列表。
///受影响的行数。
publicintExecuteNonQuery(paramsobject[]paraValues)
{
using(SqlConnectionconnection=newSqlConnection(this.connectionString))
{
SqlCommandcommand=this.CreateSqlCommand(connection);
try
{
this.DeriveParameters(command);
this.AssignParameterValues(command,paraValues);
connection.Open();
intaffectedRowsCount=command.ExecuteNonQuery();
returnaffectedRowsCount;
}
catch
{
throw;
}
}
}
////
///执行存储过程,返回System.Data.DataTable。
///
///传递给存储过程的参数值列表。
///包含查询结果的System.Data.DataTable。
publicDataTableExecuteDataTable(paramsobject[]paraValues)
{
using(SqlConnectionconnection=newSqlConnection(this.connectionString))
{
SqlCommandcommand=this.CreateSqlCommand(connection);
try
{
this.DeriveParameters(command);
this.AssignParameterValues(command,paraValues);
SqlDataAdapteradapter=newSqlDataAdapter(command);
DataTabledataTable=newDataTable();
adapter.Fill(dataTable);
returndataTable;
}
catch
{
throw;
}
}
}
////
///执行存储过程,填充指定的System.Data.DataTable。
///
///用于填充查询结果的System.Data.DataTable。
///传递给存储过程的参数值列表。
publicvoidExecuteFillDataTable(DataTabledataTable,paramsobject[]paraValues)
{
using(SqlConnectionconnection=newSqlConnection(this.connectionString))
{
SqlCommandcommand=this.CreateSqlCommand(connection);
try
{
this.DeriveParameters(command);
this.AssignParameterValues(command,paraValues);
connection.Open();
SqlDataAdapteradapter=newSqlDataAdapter(command);
adapter.Fill(dataTable);
}
catch
{
throw;
}
}
}
////
///执行存储过程返回System.Data.SqlClient.SqlDataReader,
///在System.Data.SqlClient.SqlDataReader对象关闭时,数据库连接自动关闭。
///
///传递给存储过程的参数值列表。
///包含查询结果的System.Data.SqlClient.SqlDataReader对象。
publicSqlDataReaderExecuteDataReader(paramsobject[]paraValues)
{
using(SqlConnectionconnection=newSqlConnection(this.connectionString))
{
SqlCommandcommand=this.CreateSqlCommand(connection);
try
{
this.DeriveParameters(command);
this.AssignParameterValues(command,paraValues);
connection.Open();
returncommand.ExecuteReader(CommandBehavior.CloseConnection);
}
catch
{
throw;
}
}
}
////
///执行查询,并返回查询所返回的结果集中第一行的第一列。
忽略其他列或行。
///
///传递给存储过程的参数值列表。
///结果集中第一行的第一列或空引用(如果结果集为空)。
publicobjectExecuteScalar(paramsobject[]paraValues)
{
using(SqlConnectionconnection=newSqlConnection(this.connectionString))
{
SqlCommandcommand=this.CreateSqlCommand(connection);
try
{
this.DeriveParameters(command);
this.AssignParameterValues(command,paraValues);
connection.Open();
objectresult=command.ExecuteScalar();
//stringr=command.Parameters[1].Value.ToString();
returnresult;
}
catch
{
throw;
}
}
}
////
///从在System.Data.SqlClient.SqlCommand中指定的存储过程中检索参数信息并填充指定的
///System.Data.SqlClient.SqlCommand对象的System.Data.SqlClient.SqlCommand.Parameters集 合。
///
///将从其中导出参数信息的存储过程的System.Data.SqlClient.SqlCommand对象。
internalvoidDeriveParameters(SqlCommandsqlCommand)
{
try
{
sqlCommand.Connection.Open();
SqlCommandBuilder.DeriveParameters(sqlCommand);
sqlCommand.Connection.Close();
}
catch
{
if(sqlCommand.Connection!
=null)
{
sqlCommand.Connection.Close();
}
throw;
}
}
//用指定的参数值列表为存储过程参数赋值。
privatevoidAssignParameterValues(SqlCommandsqlCommand,paramsobject[]paraValues)
{
if(paraValues!
=null)
{
if((sqlCommand.Parameters.Count-1)!
=paraValues.Length)
{
thrownewArgumentNullException("Thenumberofparametersdoesnotmatchnumberofvaluesforstoredprocedure.");
}
for(inti=0;i {
sqlCommand.Parameters[i+1].Value=(paraValues[i]==null)?
DBNull.Value:
paraValues[i];
}
}
}
//创建用于执行存储过程的SqlCommand。
privateSqlCommandCreateSqlCommand(SqlConnectionconnection)
{
SqlCommandcommand=newSqlCommand(this.storeProcedureName,connection);
command.CommandType=CommandType.StoredProcedure;
returncommand;
}
//-------------------------------------这一部分是我完善的,因为没有执行后返回存储过程中的返回值的函数-----------------------
///
///执行存储过程,返回存储过程定义的返回值,注意存储过程中参数(paraValues)如果为返回值赋为空,其它值位置对应好
///
///返回存储过程中定义的返回值数组
///存储过程中返回值的个数
///存储过程全部参数值
publicvoidExecProcOutput(outobject[]output,intoutParaNum,paramsobject[]paraValues)
{
using(SqlConnectionconnection=newSqlConnection(this.connectionString))
{
SqlCommandcommand=this.CreateSqlCommand(connection);
output=newobject[outParaNum];//存储过程中返回值的个数
try
{
this.DeriveParameters(command);
this.AssignParameterValues(command,paraValues);
connection.Open();
command.ExecuteNonQuery();
for(inti=0;i {
output[i]=command.Parameters[1].Value;
}
}
catch
{
throw;
}
}
}
}
}
------------------------------------------------增删改查存储过程-------------------------------------------
增
CREATE PROCEDURE [dbo].[Add_Admin]
(
@UserName nvarchar(50),
@Password nvarchar(50),
@LastLoginIP nvarchar(50),
@LastLoginTime Datetime
)
AS
INSERT INTO
Admin
(
UserName,
Password,
LastLoginIP,
LastLoginTime
)
Values
(
@UserName,
@Password,
@LastLoginIP,
@LastLoginTime
)
RETURN @@Identity
GO
删
CREATE PROCEDURE [dbo].[Delet