在c#应用程序中调用存储过程—执行添加数据 步骤: 首先,在SQL Server中创建存储过程; 示例代码: --创建添加数据的存储过程 if exists (select * from sysobjects where name = 'proc_AddUser') drop proc proc_AddUser go create procedure proc_AddUser @uId int output, @uName nvarchar(20), @uAge int, @uPass nvarchar(200) with encryption --对存储过程进行加密 as insert into UserInfo (uName,uAge,password) values (@uName,@uAge,@uPass) select @uId = @@identity go 其次,在c#项目中搭建三层架构,并且在数据访问层创建DBService类(数据库操作通用类,可以连接数据库,对 数据库数据进行增删改查的操作) DBService.cs using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; using System.Configuration; //配置文件 namespace Ch3DemoDAL { public class DBService { #region 私有构造 /// <summary> /// 私有构造函数 /// </summary> private DBService() { } #endregion #region 私有成员 /// <summary> /// 静态私有的数据库连接字符串 /// </summary> private static readonly string strConn = ConfigurationManager.ConnectionStrings ["Ch3Demo.Properties.Settings.Setting"].ToString(); //这里需要配置文件App.config才可用 /// <summary> /// 静态私有的数据库连接对象,封装字段 /// </summary> private static SqlConnection conn = null; public static SqlConnection Conn { get { if (conn == null) { conn = new SqlConnection(strConn); conn.Open(); } else if (conn.State == ConnectionState.Closed) { conn.Open(); } else if (conn.State == ConnectionState.Broken) { conn.Close(); conn.Open(); } return DBService.conn; } } #endregion #region 公共方法,静态公共的数据库访问方法(必须是静态的) /// <summary> /// 执行数据库的增删改操作 /// </summary> /// <param name="sql"></param> /// <returns>受影响行数</returns> public static int ExecuteCommand(string sql) { using (SqlCommand command = new SqlCommand(sql, Conn)) { return command.ExecuteNonQuery(); } } /// <summary> /// 执行带参数的SQL语句 /// </summary> /// <param name="sql"></param> /// <param name="values"></param> /// <returns></returns> public static int ExecuteCommand(string sql, params SqlParameter[] values) { using (SqlCommand command = new SqlCommand(sql, Conn)) { command.Parameters.AddRange(values); return command.EndExecuteNonQuery(); } } /// <summary> /// 执行数据库的增删改查操作 /// </summary> /// <param name="sql"></param> /// <returns>首行首列</returns> public static int ExecuteScalar(string sql) { using (SqlCommand command = new SqlCommand(sql, Conn)) { return Convert.ToInt32(command.ExecuteScalar()); } } /// <summary> /// 执行带参数的SQL语句 /// </summary> /// <param name="sql"></param> /// <param name="values"></param> /// <returns></returns> public static int ExecuteScalar(string sql,params SqlParameter[] values) { using (SqlCommand command = new SqlCommand(sql, Conn)) { command.Parameters.AddRange(values); return Convert.ToInt32(command.ExecuteScalar()); } } /// <summary> /// 获得DataReader /// </summary> /// <param name="sql"></param> /// <returns></returns> public static SqlDataReader GetRerader(string sql) { SqlCommand command = new SqlCommand(sql, Conn); SqlDataReader dataReader = command.ExecuteReader(CommandBehavior.CloseConnection); return dataReader; } /// <summary> /// 执行带参数的SQL语句 /// </summary> /// <param name="sql"></param> /// <param name="values"></param> /// <returns></returns> public static SqlDataReader GetRerader(string sql, params SqlParameter[] values) { SqlCommand command = new SqlCommand(sql,Conn); command.Parameters.AddRange(values); SqlDataReader dataReader = command.ExecuteReader(CommandBehavior.CloseConnection); return dataReader; } /// <summary> /// 获得结果集 /// </summary> /// <param name="sql"></param> /// <returns></returns> public static DataSet GetResult(string sql) { DataSet dataSet = new DataSet(); using (SqlDataAdapter da = new SqlDataAdapter(sql, Conn)) { da.Fill(dataSet); } return dataSet; } #endregion } } 之后,再在数据访问层创建一个AddUserService类,用于添加用户;该类就运用存储过程对程序进行增加用户的 操作; 示例代码: AddUserService.cs using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.SqlClient; namespace Ch3DemoDAL { public class AddUserService { public static int AddUser(Entity.UserInfo user) { int id = 0; //使用存储过程实现添加数据 //proc_AddUser为存储过程名称 using (SqlCommand command = new SqlCommand("proc_AddUser", DBService.Conn)) { //指定command对象的执行方式 command.CommandType = CommandType.StoredProcedure; //指定存储过程的参数并赋值 command.Parameters.Add("@uName",SqlDbType.NVarChar,20).Value = user.Name; command.Parameters.Add("@uAge", SqlDbType.Int).Value = user.Age; command.Parameters.Add("@uPass", SqlDbType.NVarChar, 200).Value = user.Password; //设置输出参数 command.Parameters.Add("@uId", SqlDbType.Int).Direction =ParameterDirection.Output; //@uId,@uName等参数必须与数据库存储过程中的参数一致 //执行 command.ExecuteNonQuery(); //获取输出参数的值 id = Convert.ToInt32(command.Parameters["@uId"].Value); } return id; } } } 至此,就可用存储过程向数据库添加数据了。 文章来自:http://renhappy20066.blog.163.com/blog/static/1120807862010220103254236/