1、存储过程大全登录增删改查连接调用C#完整执行存储过程的代码加实例using System;using System.Collections.Generic;using System.Text;using System.Data.SqlClient;using System.Collections;using System.Data;namespace TestWindowpublic class StoreProcedure / 连接字符串。 private string connectionString; / 存储过程名称。 private string storeProcedureName
2、; private const String connString = Data Source=localhostSQLEXPRESS;Initial Catalog=Sample;Integrated Security=True; / / 初始化 DataAccessHelper.StoreProceduer 对象。 / / 数据库连接字符串。 public StoreProcedure(string connectionString) this.connectionString = connectionString; / / 初始化 DataAccessHelper.StoreProced
3、uer 对象。 / / 数据库连接字符串。 / 存储过程名称。 public StoreProcedure(string storeProcedureName, string connectionString) this.connectionString = connectionString; this.storeProcedureName = storeProcedureName; / / 获取或设置存储过程名称。 / public string StoreProcedureName get return this.storeProcedureName; set this.storeProc
4、edureName = value; / / 执行操作类(Insert/Delete/Update)存储过程。 / / 传递给存储过程的参数值列表。 / 受影响的行数。 public int ExecuteNonQuery(params object paraValues) using (SqlConnection connection = new SqlConnection(this.connectionString) SqlCommand command = this.CreateSqlCommand(connection); try this.DeriveParameters(comma
5、nd); this.AssignParameterValues(command, paraValues); connection.Open(); int affectedRowsCount = command.ExecuteNonQuery(); return affectedRowsCount; catch throw; / / 执行存储过程,返回 System.Data.DataTable。 / / 传递给存储过程的参数值列表。 / 包含查询结果的 System.Data.DataTable。 public DataTable ExecuteDataTable(params object
6、paraValues) using (SqlConnection connection = new SqlConnection(this.connectionString) SqlCommand command = this.CreateSqlCommand(connection); try this.DeriveParameters(command); this.AssignParameterValues(command, paraValues); SqlDataAdapter adapter = new SqlDataAdapter(command); DataTable dataTabl
7、e = new DataTable(); adapter.Fill(dataTable); return dataTable; catch throw; / / 执行存储过程,填充指定的 System.Data.DataTable。 / / 用于填充查询结果的 System.Data.DataTable。 / 传递给存储过程的参数值列表。 public void ExecuteFillDataTable(DataTable dataTable, params object paraValues) using (SqlConnection connection = new SqlConnecti
8、on(this.connectionString) SqlCommand command = this.CreateSqlCommand(connection); try this.DeriveParameters(command); this.AssignParameterValues(command, paraValues); connection.Open(); SqlDataAdapter adapter = new SqlDataAdapter(command); adapter.Fill(dataTable); catch throw; / / 执行存储过程返回 System.Da
9、ta.SqlClient.SqlDataReader, / 在 System.Data.SqlClient.SqlDataReader 对象关闭时,数据库连接自动关闭。 / / 传递给存储过程的参数值列表。 / 包含查询结果的 System.Data.SqlClient.SqlDataReader 对象。 public SqlDataReader ExecuteDataReader(params object paraValues) using (SqlConnection connection = new SqlConnection(this.connectionString) SqlCom
10、mand command = this.CreateSqlCommand(connection); try this.DeriveParameters(command); this.AssignParameterValues(command, paraValues); connection.Open(); return command.ExecuteReader(CommandBehavior.CloseConnection); catch throw; / / 执行查询,并返回查询所返回的结果集中第一行的第一列。忽略其他列或行。 / / 传递给存储过程的参数值列表。 / 结果集中第一行的第一
11、列或空引用(如果结果集为空)。 public object ExecuteScalar(params object paraValues) using (SqlConnection connection = new SqlConnection(this.connectionString) SqlCommand command = this.CreateSqlCommand(connection); try this.DeriveParameters(command); this.AssignParameterValues(command, paraValues); connection.Ope
12、n(); object result = command.ExecuteScalar(); /string r = command.Parameters1.Value.ToString(); return result; catch throw; / / 从在 System.Data.SqlClient.SqlCommand 中指定的存储过程中检索参数信息并填充指定的 / System.Data.SqlClient.SqlCommand 对象的 System.Data.SqlClient.SqlCommand.Parameters 集 合。 / / 将从其中导出参数信息的存储过程的 Syste
13、m.Data.SqlClient.SqlCommand 对象。 internal void DeriveParameters(SqlCommand sqlCommand) try sqlCommand.Connection.Open(); SqlCommandBuilder.DeriveParameters(sqlCommand); sqlCommand.Connection.Close(); catch if (sqlCommand.Connection != null) sqlCommand.Connection.Close(); throw; / 用指定的参数值列表为存储过程参数赋值。
14、private void AssignParameterValues(SqlCommand sqlCommand, params object paraValues) if (paraValues != null) if (sqlCommand.Parameters.Count - 1) != paraValues.Length) throw new ArgumentNullException(The number of parameters does not match number of values for stored procedure.); for (int i = 0; i pa
15、raValues.Length; i+) sqlCommand.Parametersi + 1.Value = (paraValuesi = null) ? DBNull.Value : paraValuesi; / 创建用于执行存储过程的 SqlCommand。 private SqlCommand CreateSqlCommand(SqlConnection connection) SqlCommand command = new SqlCommand(this.storeProcedureName, connection); command.CommandType = CommandTy
16、pe.StoredProcedure; return command; /-这一部分是我完善的,因为没有执行后返回存储过程中的返回值的函数- / / 执行存储过程,返回存储过程定义的返回值,注意存储过程中参数(paraValues)如果为返回值赋为空,其它值位置对应好 / / 返回存储过程中定义的返回值数组 / 存储过程中返回值的个数 / 存储过程全部参数值 public void ExecProcOutput(out object output, int outParaNum, params object paraValues) using (SqlConnection connection
17、 = new SqlConnection(this.connectionString) SqlCommand command = this.CreateSqlCommand(connection); output = new objectoutParaNum;/存储过程中返回值的个数 try this.DeriveParameters(command); this.AssignParameterValues(command, paraValues); connection.Open(); command.ExecuteNonQuery(); for (int i = 0; i outParaN
18、um; i+)/将存储过程返回的参数值返回到程序中 outputi = command.Parameters1.Value; catch throw; -增删改查存储过程-增CREATEPROCEDUREdbo.Add_Admin(UserNamenvarchar(50),Passwordnvarchar(50),LastLoginIPnvarchar(50),LastLoginTimeDatetime)ASINSERTINTOAdmin(UserName,Password,LastLoginIP,LastLoginTime)Values(UserName,Password,LastLoginIP,LastLoginTime)RETURNIdentityGO删CREATEPROCEDUREdbo.Delet
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1