下面以调用: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());
小注