最近有个网友问我转载的文章《.NET中统一的存储过程调用方法(收藏) 》具体该如何实现.

于是我写了代码完成了此功能.代码中有两个类

一个是用来做返回值的载体的用一个DataSet返回查询出的数据,用一个Hashtable返回存储过程的返回值和输出参数.

using System;
using System.Data;
using System.Collections;

namespace DDLLY
{
    
/// <summary>
    
/// SqlResult 的摘要说明。
    
/// </summary>

    public class SqlResult 
    
{
        
public DataSet MyDataSet=new DataSet();
        
public Hashtable ReturnVal=new Hashtable();
    }

}

这个类是具体的实现,代码并不复杂,这里我也就不罗嗦了.只需要注意方法的参数是可变参数.

using System;
using System.Data;
using System.Data.SqlClient;

namespace DDLLY
{
    
/// <summary>
    
/// SQLProcHelper 的摘要说明。
    
/// </summary>

    public class SQLProcHelper
    
{
        
//存储过程名
        private String procedureName=null;
        
//连接字符串
        private String connectionString=null;

        
private SqlConnection myConnection=new SqlConnection();
        
private SqlCommand myCommand=new SqlCommand();
        
private SqlParameter myParameter=new SqlParameter();
        
        
存储过程名

        
连接字符串

        
构造函数

        
调用存储过程

        
获得存储过程的参数

        
获得返回值参数
    }

}

调用的时候只需要把参数直接做方法的参数即可.

    try
            
{
                SQLProcHelper helper
=new SQLProcHelper("byroyalty","server=ddl;database=pubs;uid=sa;pwd=wd");
                SqlResult result
=helper.Call(100);
                dataGrid1.DataSource
=result.MyDataSet.Tables[0];
            }

            
catch(Exception ex)
            
{
                label1.Text
=ex.Message;
            }

由于这段代码只是做个测试,所以还存在不少小问题.