创建博客 登录  
 关注
   显示下一条  |  关闭

 
 
 

日志

 
 

在c#应用程序中调用存储过程—执行添加数据  

2010-03-20 22:32:54|  分类: winform C# |  标签: |字号 订阅

在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;
        }
    }
}

至此,就可用存储过程向数据库添加数据了。

 

  评论这张
转发至微博
转发至微博
0   分享到:        
阅读(402)| 评论(0)| 引用 (0) |举报

历史上的今天

相关文章

最近读者

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--相关文章--> <#--历史上的今天--> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2012