码迷,mamicode.com
首页 > Windows程序 > 详细

c#调用存储过程

时间:2015-03-06 15:47:15      阅读:210      评论:0      收藏:0      [点我收藏+]

标签:

public partial class ProcedureTest : System.Web.UI.Page
    {
        public static  string conn = ConfigurationManager.ConnectionStrings["StuRelationDBConnectionString"].ConnectionString;
        public SqlConnection con = new SqlConnection(conn);
        protected void Page_Load(object sender, EventArgs e)
        {
            runGetUserAccountRe3();
        }

        //只返回单一记录集的存储过程GetUserAccount
        public void runGetUserAccount()
        {
            SqlDataAdapter dp = new SqlDataAdapter(common("GetUserAccount"));
            DataSet ds = new DataSet();
            // 填充dataset
            dp.Fill(ds);
            rpt.DataSource = ds;
            rpt.DataBind();

        }

        //没有输入输出的存储过程inUserAccount
        public void runinUserAccount()
        {            
            con.Open();
            Label1.Text = common("inUserAccount").ExecuteNonQuery().ToString();
            con.Close();
        }

        //有返回值的存储过程inUserAccountRe
        public void runinUserAccountRe()
        {
            // 创建参数
            SqlCommand cmd = common("inUserAccountRe");
            IDataParameter[] parameters = {
                 new SqlParameter("rval", SqlDbType.Int,4)
             };
            // 将参数类型设置为 返回值类型
            parameters[0].Direction = ParameterDirection.ReturnValue;
            // 添加参数
            cmd.Parameters.Add(parameters[0]);
            con.Open();
            // 执行存储过程并返回影响的行数
            Label1.Text = cmd.ExecuteNonQuery().ToString();
            con.Close();
            // 显示影响的行数和返回值
            Label1.Text += "-" + parameters[0].Value.ToString();
        }

        //有输入参数和输出参数的存储过程
        public void runGetUserAccountRe()
        {
            SqlCommand cmd = common("GetUserAccountRe");
            // 创建参数
            IDataParameter[] parameters = {
                 new SqlParameter("@UserName", SqlDbType.NChar,20) ,
                 new SqlParameter("@UserID", SqlDbType.Int) ,
             };
            // 设置参数类型
            parameters[0].Value = "7";  
            parameters[1].Direction = ParameterDirection.Output;  // 设置为输出参数
            // 添加参数
            cmd.Parameters.Add(parameters[0]);
            cmd.Parameters.Add(parameters[1]);
            con.Open();
            // 执行存储过程并返回影响的行数
            Label1.Text = cmd.ExecuteNonQuery().ToString();
            con.Close();           
            // 显示影响的行数和输出参数
            Label1.Text += "-" + parameters[1].Value.ToString();
           
        }

        //同时具有返回值、输入参数、输出参数的存储过程GetUserAccountRe1
        public void runGetUserAccountRe1()
        {
            SqlCommand cmd = common("GetUserAccountRe1");
            // 创建参数
            IDataParameter[] parameters = {
                 new SqlParameter("@UserName", SqlDbType.NChar,20) ,
                 new SqlParameter("@UserID", SqlDbType.Int) ,
                 new SqlParameter("rval", SqlDbType.Int,4)
             };
            // 设置参数类型
            parameters[0].Value = "7";
            parameters[1].Direction = ParameterDirection.Output;  // 设置为输出参数
            parameters[2].Direction = ParameterDirection.ReturnValue;  //设置为返回值
            // 添加参数
            cmd.Parameters.Add(parameters[0]);
            cmd.Parameters.Add(parameters[1]);
            cmd.Parameters.Add(parameters[2]);
            con.Open();
            // 执行存储过程并返回影响的行数
            Label1.Text = cmd.ExecuteNonQuery().ToString();
            con.Close();
            // 显示影响的行数和输出参数
            Label1.Text += "-输出参数为:" + parameters[1].Value.ToString();
            Label1.Text += "-返回值为:" + parameters[2].Value.ToString();

        }

        //同时返回参数和记录集的存储过程GetUserAccountRe2
        public void runGetUserAccountRe2()
        {
            SqlCommand cmd = common("GetUserAccountRe2");
            // 创建参数
            IDataParameter[] parameters = {
                 new SqlParameter("@UserName", SqlDbType.NChar,20) ,
                 new SqlParameter("@UserID", SqlDbType.Int) ,
                 new SqlParameter("rval", SqlDbType.Int,4)
             };
            // 设置参数类型
            parameters[0].Value = "7";
            parameters[1].Direction = ParameterDirection.Output;  // 设置为输出参数
            parameters[2].Direction = ParameterDirection.ReturnValue;  //设置为返回值
            // 添加参数
            cmd.Parameters.Add(parameters[0]);
            cmd.Parameters.Add(parameters[1]);
            cmd.Parameters.Add(parameters[2]);
            con.Open();
            // 执行存储过程并返回影响的行数
            Label1.Text = cmd.ExecuteNonQuery().ToString();
            DataSet ds = new DataSet();
            SqlDataAdapter dt = new SqlDataAdapter(cmd);
            dt.Fill(ds);
            rpt.DataSource = ds;
            rpt.DataBind();
            con.Close();
            // 显示影响的行数和输出参数
            Label1.Text += "-输出参数为:" + parameters[1].Value.ToString();
            Label1.Text += "-返回值为:" + parameters[2].Value.ToString();

        }

        //返回多个记录集的存储过程
        public void runGetUserAccountRe3()
        {
            DataSet ds = new DataSet();
            SqlDataAdapter dt = new SqlDataAdapter(common("GetUserAccountRe3"));
            dt.Fill(ds);
            rpt1.DataSource = ds.Tables[0].DefaultView;
            rpt1.DataBind();
            rpt2.DataSource = ds.Tables[1].DefaultView;
            rpt2.DataBind();
        }
        
        public SqlCommand common(string proName)
        {
            
            SqlCommand cmd = new SqlCommand();
            // 设置sql连接
            cmd.Connection = con;            
            // 如果执行语句
            cmd.CommandText = proName;
            // 指定执行语句为存储过程
            cmd.CommandType = CommandType.StoredProcedure;
            return cmd;
        }
    }

 

附带SQLServer数据库的一些全局变量

select APP_NAME ( ) as w --当前会话的应用程序

select @@IDENTITY   --返回最后插入的标识值
select USER_NAME()    --返回用户数据库用户名

SELECT @@CONNECTIONS  --返回自上次SQL启动以来连接或试图连接的次数。
SELECT GETDATE() --当前时间
SELECT @@CPU_BUSY/100  --返回自上次启动SQL 以来 CPU 的工作时间,单位为毫秒

USE tempdb SELECT @@DBTS  as w  --为当前数据库返回当前 timestamp 数据类型的值。这一 timestamp 值保证在数据库中是唯一的。
select @@IDENTITY as w --返回最后插入的标识值
SELECT @@IDLE  as w  --返回SQL自上次启动后闲置的时间,单位为毫秒
SELECT @@IO_BUSY AS w   --返回SQL自上次启动后用于执行输入和输出操作的时间,单位为毫秒
SELECT @@LANGID AS w   --返回当前所使用语言的本地语言标识符(ID)。
SELECT @@LANGUAGE AS w   --返回当前使用的语言名
SELECT @@LOCK_TIMEOUT as w  --当前会话的当前锁超时设置,单位为毫秒。
SELECT @@MAX_CONNECTIONS  as w  --返回SQL上允许的同时用户连接的最大数。返回的数不必为当前配置的数值
EXEC sp_configure  --显示当前服务器的全局配置设置
SELECT @@MAX_PRECISION as w --返回 decimal 和 numeric 数据类型所用的精度级别,即该服务器中当前设置的精度。默认最大精度38。
select @@OPTIONS  as w  --返回当前 SET 选项的信息。
SELECT @@PACK_RECEIVED as w  --返回SQL自启动后从网络上读取的输入数据包数目。
SELECT @@PACK_SENT as w  --返回SQ自上次启动后写到网络上的输出数据包数目。
SELECT @@PACKET_ERRORS as w  --返回自SQL启动后,在SQL连接上发生的网络数据包错误数。
SELECT @@SERVERNAME as w --返回运行SQL服务器名称。
SELECT @@SERVICENAME  as w --返回SQL正在其下运行的注册表键名
SELECT @@TIMETICKS  as w --返回SQL服务器一刻度的微秒数
SELECT @@TOTAL_ERRORS AS w  --返回 SQL服务器自启动后,所遇到的磁盘读/写错误数。
SELECT @@TOTAL_READ  as w  --返回 SQL服务器自启动后读取磁盘的次数。
SELECT @@TOTAL_WRITE as w  --返回SQL服务器自启动后写入磁盘的次数。
SELECT @@TRANCOUNT  as w  --返回当前连接的活动事务数。
SELECT @@VERSION as w  --返回SQL服务器安装的日期、版本和处理器类型。

 

转载原文:http://www.cnblogs.com/knowledgesea/archive/2013/01/02/2841588.html

 

c#调用存储过程

标签:

原文地址:http://www.cnblogs.com/lizihong/p/4318308.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!