C# 调用存储过程

简介: 下面以调用:Sql Server 分页存储过程为例 调用代码如下: string MyConn = "server=数据库服务器Ip;uid=数据库用户名;pwd=密码;database=数据库名称;Trusted_Connection=no"; SqlConnection MyConnection = new SqlConnection(MyConn);

下面以调用:Sql Server 分页存储过程为例

调用代码如下:

 string MyConn = "server=数据库服务器Ip;uid=数据库用户名;pwd=密码;database=数据库名称;Trusted_Connection=no";
            SqlConnection MyConnection = new SqlConnection(MyConn); 
            SqlDataAdapter da = new SqlDataAdapter();
            da.SelectCommand = new SqlCommand();
            da.SelectCommand.Connection = MyConnection;
            da.SelectCommand.CommandText = "proc_ListPageInt";
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
          
            IDataParameter[] parameters = { 

                 new SqlParameter("@tblName", SqlDbType.NVarChar) ,
                 new SqlParameter("@fldName", SqlDbType.NVarChar) , 
                 new SqlParameter("@pageSize", SqlDbType.Int) , 
                 new SqlParameter("@page", SqlDbType.Int) , 
                 new SqlParameter("@pageCount", SqlDbType.Int) , 
                 new SqlParameter("@Counts", SqlDbType.Int) , 
                 new SqlParameter("@fldSort", SqlDbType.NVarChar) , 
                 new SqlParameter("@Sort", SqlDbType.Bit) , 
                 new SqlParameter("@strCondition", SqlDbType.NVarChar) , 
                 new SqlParameter("@ID", SqlDbType.NVarChar) , 
                 new SqlParameter("@Dist", SqlDbType.Bit) 
             };
            // 设置参数类型 
            parameters[0].Direction = ParameterDirection.Input;// 设置为输入参数
            parameters[0].Value = "sysobjects";

            parameters[1].Direction = ParameterDirection.Input;// 设置为输入参数
            parameters[1].Value = "*";

            parameters[2].Direction = ParameterDirection.Input;// 设置为输入参数
            parameters[2].Value =20;

            parameters[3].Direction = ParameterDirection.Input;// 设置为输入参数
            parameters[3].Value = 1;

            parameters[4].Direction = ParameterDirection.Output;// 设置为输出参数

            parameters[5].Direction = ParameterDirection.Output;// 设置为输出参数

            parameters[6].Direction = ParameterDirection.Input;// 设置为输入参数
            parameters[6].Value = "id";

            parameters[7].Direction = ParameterDirection.Input;// 设置为输入参数
            parameters[7].Value = 0;

            parameters[8].Direction = ParameterDirection.Input;// 设置为输入参数
            parameters[8].Value = "";

            parameters[9].Direction = ParameterDirection.Input;// 设置为输入参数
            parameters[9].Value = "id";

            parameters[10].Direction = ParameterDirection.Input;// 设置为输入参数
            parameters[10].Value =0;

            da.SelectCommand.Parameters.Add(parameters[0]);
            da.SelectCommand.Parameters.Add(parameters[1]);
            da.SelectCommand.Parameters.Add(parameters[2]);
            da.SelectCommand.Parameters.Add(parameters[3]);
            da.SelectCommand.Parameters.Add(parameters[4]);
            da.SelectCommand.Parameters.Add(parameters[5]);
            da.SelectCommand.Parameters.Add(parameters[6]);
            da.SelectCommand.Parameters.Add(parameters[7]);
            da.SelectCommand.Parameters.Add(parameters[8]);
            da.SelectCommand.Parameters.Add(parameters[9]);
            da.SelectCommand.Parameters.Add(parameters[10]);

            MyConnection.Open();

调用存储过程的东东已经搞定了,那么怎么获取dataset呢?

方法一:

  SqlDataAdapter dp = new SqlDataAdapter(da.SelectCommand);
            DataSet ds = new DataSet();
            dp.Fill(ds);

方法二:

  SqlDataReader reader = da.SelectCommand.ExecuteReader();//读取数据 
            DataSet ds = this.ConvertDataReaderToDataSet(reader);
            MyConnection.Close();

执行结果如下:


与在数据库中执行的结果一致。

那么新的问题来了,如果获取存储过程的返回参数呢?

比如获取pageCount,代码如下:

int pageCount = int.Parse(da.SelectCommand.Parameters["@pageCount"].Value.ToString());

小注

DataReader转DataSet方法

目录
相关文章
|
存储 SQL 关系型数据库
C# 中的数据库操作~存储过程篇Mysql SqlServer
C# 中的数据库操作~存储过程篇Mysql SqlServer
|
存储 SQL 程序员
C#二十六 使用Ado.Net调用存储过程
C#二十六 使用Ado.Net调用存储过程
73 0
|
存储 C#
C# 如何物理删除有主外键约束的记录?存储过程实现
十年河东,十年河西,莫欺少年穷 本篇主旨是如何物理删除有主外键约束的记录!那么,我们从主外键走起! 下面新建三张有主外键约束的表,分别为:系/学院表,专业班表,学生表,如下: CREATE TABLE Dept--系/学院表 ( DeptId int identity(1,1) primary k...
1133 0
|
SQL 存储 .NET
SQL Server CLR 使用 C# 自定义存储过程和触发器
原文:SQL Server CLR 使用 C# 自定义存储过程和触发器 这一篇博客接着上一篇博客继续介绍 SQL CLR Stored Procedure 和 CLR Trigger, 上一篇博客介绍了 SQL CLR Function 的使用,以及 CLR 程序集的注册和 CLR Function 的注册。
962 0