net中统一的存储过程调用方法 4
点击次数:21 次 发布日期:2008-11-26 10:45:35 作者:源代码网
|
源代码网推荐 源代码网推荐 myParameter = new SqlParameter(); 源代码网推荐 源代码网推荐 myParameter.ParameterName = "@Value"; 源代码网推荐 源代码网推荐 myParameter.SqlDbType = SqlDbType.Int; 源代码网推荐 源代码网推荐 myParameter.Direction = ParameterDirection.ReturnValue; 源代码网推荐 源代码网推荐 myCommand.Parameters.Add(myParameter); 源代码网推荐 源代码网推荐 int i = 0; // 创建各个参数,在这个地方可以自动的创建SqlParameter的类型,值,方向等属性 源代码网推荐 源代码网推荐 while(reader.Read()) 源代码网推荐 源代码网推荐 { 源代码网推荐 源代码网推荐 myParameter = new SqlParameter(); 源代码网推荐 源代码网推荐 myParameter.ParameterName = reader["PARAMETER_NAME"].ToString(); 源代码网推荐 源代码网推荐 myParameter.Direction = reader["PARAMETER_MODE"].ToString()=="IN"?ParameterDirection.Input:ParameterDirection.Output; 源代码网推荐 源代码网推荐 switch(reader["DATA_TYPE"].ToString()) { 源代码网推荐 源代码网推荐 case "int" : 源代码网推荐 源代码网推荐 if(myParameter.Direction == ParameterDirection.Input) 源代码网推荐 源代码网推荐 myParameter.Value = (int)parameters[i]; 源代码网推荐 源代码网推荐 myParameter.SqlDbType = SqlDbType.Int; 源代码网推荐 源代码网推荐 break; //...省略了很多具体的类型处理 源代码网推荐 源代码网推荐 default : break; } 源代码网推荐 源代码网推荐 i++; 源代码网推荐 源代码网推荐 myCommand.Parameters.Add(myParameter); 源代码网推荐 源代码网推荐 } 源代码网推荐 源代码网推荐 } 源代码网推荐 3.2返回结果数据集、返回值、传出参数集 源代码网推荐 创建好存储过程的参数之后,我们就可以调用这个存储过程了。由于在.NET中,常用的返回结果集的类为SqlDataReader和DataSet,而SqlDataReader必须在保持连接的状态下才可以使用,DataSet却不需要。在我们的实现中,连接应该在调用之后就断开,因此采用DataSet来保存返回结果集。 源代码网推荐 源代码网推荐 源代码网推荐 public SqlResult Call(params object[] parameters){ // SqlResult是自己定义的用于保存结果数据集、返回值、传出参数集的类 SqlResult result = new SqlResult(); // 根据需要定义自己的连接字符串 源代码网推荐 源代码网推荐 myConnection = new SqlConnection(ConnectionString); 源代码网推荐 源代码网推荐 myCommand = new SqlCommand(this.ProcedureName, myConnection); 源代码网推荐 源代码网推荐 myCommand.CommandType = CommandType.StoredProcedure; 源代码网推荐 源代码网推荐 SqlDataAdapter myAdapter = new SqlDataAdapter(myCommand); 源代码网推荐 源代码网推荐 myConnection.Open(); // 获得和创建存储过程的参数,并且设置好值 源代码网推荐 源代码网推荐 GetProcedureParameter(parameters); 源代码网推荐 源代码网推荐 myAdapter.Fill(result.dataSet, "Table"); // 获得存储过程的传出参数值和名字对,保存在一个Hashtable中 GetOutputValue(result); // 在这里释放各种资源,断开连接 源代码网推荐 源代码网推荐 myAdapter.Dispose(); 源代码网推荐 源代码网推荐 myCommand.Dispose(); 源代码网推荐 源代码网推荐 myConnection.Close(); 源代码网推荐 源代码网推荐 myConnection.Dispose(); 源代码网推荐 源代码网推荐 return result;} 源代码网推荐 4.进一步工作 源代码网推荐 虽然我们在这里的实现是针对SQL 源代码网推荐 源代码网推荐 源代码网推荐 做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。 源代码网推荐 源代码网供稿. |
