多次调用RunPorce
protected SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters ) 
竟然会出现卡死,以扣再有连接,就会出现错误。using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;namespace WebSite.Public
{
/// <summary>
/// XinoDB 的摘要说明。
/// </summary>
public class XinoDB
{
private string strError; public XinoDB()
{
strError="";
} /*******************************************
 * 函数名称: XinoGetError
 * 功能描述: 取得最后一次错误描述
 */
public string XinoGetError()
{
return strError;
}

/*******************************************
 * 函数名称: XinoSetError
 * 功能描述: 设置最后一次错误描述
 */
public void XinoSetError(string strNewError)
{
strError=strNewError;
} /*******************************************
 * 函数名称: Connection
 * 功能描述: 打开数据库连接
 */
public bool XinoConnection(SqlConnection objConn)
{
try
{
string strConn=ConfigurationSettings.AppSettings["ConnectionString"];
objConn.ConnectionString = strConn;
objConn.Open();
}
catch(System.Exception e)
{
XinoSetError(e.ToString());
return false;
}
return true;
}

/*******************************************
 *函数名称: XinoClose
 *功能描述: 关闭数据库连接
 */
public bool XinoClose(SqlConnection objConn)
{
try
{
objConn.Close();
}
catch(System.Exception e)
{
XinoSetError(e.ToString());
return false;
}
return true;
} private SqlCommand BuildIntCommand(SqlConnection Connection,string storedProcName, IDataParameter[] parameters)
{
SqlCommand command = BuildQueryCommand(Connection, storedProcName, parameters );    command.Parameters.Add( new SqlParameter ( "ReturnValue",
SqlDbType.Int,
4, /* Size */
ParameterDirection.ReturnValue,
false, /* is nullable */
0, /* byte precision */
0, /* byte scale */
string.Empty,
DataRowVersion.Default,
null )); return command;
} /// <summary>
/// Builds a SqlCommand designed to return a SqlDataReader, and not
/// an actual integer value.
/// </summary>
/// <param name="storedProcName">Name of the stored procedure</param>
/// <param name="parameters">Array of IDataParameter objects</param>
/// <returns></returns>
private SqlCommand BuildQueryCommand(SqlConnection Connection,string storedProcName, IDataParameter[] parameters)
{
SqlCommand command = new SqlCommand( storedProcName, Connection );
command.CommandType = CommandType.StoredProcedure; foreach (SqlParameter parameter in parameters)
{
command.Parameters.Add( parameter );
} return command; } /*******************************************
 *函数名称: RunProcedure
 *功能描述: 执行存储过程
 */
protected int RunProcedure(string storedProcName, IDataParameter[] parameters, out int rowsAffected ) 

int result = 0; 
SqlConnection Connection = new SqlConnection();
rowsAffected = 0;
try
{
XinoConnection(Connection); SqlCommand command = BuildIntCommand(Connection, storedProcName, parameters ); 
rowsAffected = command.ExecuteNonQuery(); 
result = (int)command.Parameters["ReturnValue"].Value; 

XinoClose(Connection);
}
catch(System.Exception e)
{
XinoSetError(e.ToString());
}
return result; 
}  protected SqlDataReader RunProcedure(string storedProcName, IDataParameter[] parameters ) 

SqlDataReader returnReader=null; 

SqlConnection Connection = new SqlConnection();

if(XinoConnection(Connection))
{ SqlCommand command = BuildQueryCommand(Connection, storedProcName, parameters ); 
command.CommandType = CommandType.StoredProcedure;  returnReader = command.ExecuteReader(); 
}
//XinoClose(Connection);   return returnReader; 
}  protected DataSet RunProcedure(string storedProcName, IDataParameter[] parameters, string tableName ) 

DataSet dataSet = new DataSet(); 

SqlConnection Connection = new SqlConnection();

XinoConnection(Connection); SqlDataAdapter sqlDA = new SqlDataAdapter(); 
sqlDA.SelectCommand = BuildQueryCommand(Connection, storedProcName, parameters ); 
sqlDA.Fill( dataSet, tableName );  XinoClose(Connection);  return dataSet; 
}  protected void RunProcedure(string storedProcName, IDataParameter[] parameters, DataSet dataSet, string tableName ) 

SqlConnection Connection = new SqlConnection();

XinoConnection(Connection); SqlDataAdapter sqlDA = new SqlDataAdapter(); 
sqlDA.SelectCommand = BuildIntCommand(Connection, storedProcName, parameters ); 
sqlDA.Fill( dataSet, tableName );  XinoClose(Connection); 
} //执行存储过程结束
/****************************************************************************************/
}
}