首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

超时时间已到。在从池中获取连接之前超时时间已过?解决办法

2012-02-09 
超时时间已到。在从池中获取连接之前超时时间已过?超时时间已到。在从池中获取连接之前超时时间已过?老是连

超时时间已到。在从池中获取连接之前超时时间已过?
超时时间已到。在从池中获取连接之前超时时间已过?
老是连接池超时,是连接池没有关闭!
我是个新手,请问下,各位大哥大姐,在哪里解决他的关闭问题,还不能改变原有的类,谢谢了!由于帖子不能太长,我就分成两段!

using   System;
using   System.Configuration;
using   System.Data;
using   System.Data.SqlClient;
using   System.Collections;
namespace   GdVnet.GdVnetClass
{
public   class   W_SqlHelper
{
public   SqlCommandBuilder   updatebuilder;  
public   W_SqlHelper()
{
}
public   static   readonly   string   CONN_STRING1=   ConfigurationSettings.AppSettings[ "ConnectionString1 "];
public   static   readonly   string   CONN_STRING2=   ConfigurationSettings.AppSettings[ "ConnectionString2 "];
private   static   Hashtable   parmCache   =   Hashtable.Synchronized(new   Hashtable());
public   static   DataSet   tablesDs=new   DataSet();  
public   static   int   ExecuteNonQuery(string   connString,   CommandType   cmdType,   string   cmdText,   params   SqlParameter[]   cmdParms)  
{
SqlCommand   cmd   =   new   SqlCommand();
using   (SqlConnection   conn   =   new   SqlConnection(connString))  
{
PrepareCommand(cmd,   conn,   null,   cmdType,   cmdText,   cmdParms);
int   val   =   cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return   val;
}
}
public   static   int   ExecuteNonQuery(SqlConnection   conn,   CommandType   cmdType,   string   cmdText,   params   SqlParameter[]   cmdParms)  
{
SqlCommand   cmd   =   new   SqlCommand();

PrepareCommand(cmd,   conn,   null,   cmdType,   cmdText,   cmdParms);
int   val   =   cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return   val;
}
public   static   int   ExecuteNonQuery(SqlTransaction   trans,   CommandType   cmdType,   string   cmdText,   params   SqlParameter[]   cmdParms)  
{
SqlCommand   cmd   =   new   SqlCommand();
PrepareCommand(cmd,   trans.Connection,   trans,   cmdType,   cmdText,   cmdParms);
int   val   =   cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
return   val;
}
public   static   SqlDataReader   ExecuteReader(string   connectionString,   CommandType   commandType,   string   commandText)
{
return   ExecuteReader(connectionString,   commandType,   commandText,   (SqlParameter[])null);
}
public   static   SqlDataReader   ExecuteReader(string   connString,   CommandType   cmdType,   string   cmdText,   params   SqlParameter[]   cmdParms)  
{
SqlCommand   cmd   =   new   SqlCommand();
SqlConnection   conn   =   new   SqlConnection(connString);
try  
{
PrepareCommand(cmd,   conn,   null,   cmdType,   cmdText,   cmdParms);
SqlDataReader   rdr   =   cmd.ExecuteReader(CommandBehavior.CloseConnection);
cmd.Parameters.Clear();

return   rdr;
}
catch  
{
conn.Close();
throw;
}
}
public   static   DataSet   ExecuteDataset(string   connectionString,   CommandType   commandType,   string   commandText)


{
return   ExecuteDataset(connectionString,   commandType,   commandText,   (SqlParameter[])null);
}
public   static   DataSet   ExecuteDataset(string   connectionString,   CommandType   commandType,   string   commandText,   params   SqlParameter[]   commandParameters)
{
using   (SqlConnection   cn   =   new   SqlConnection(connectionString))
{
cn.Open();
return   ExecuteDataset(cn,   commandType,   commandText,   commandParameters);
}
}
public   static   DataSet   ExecuteDataset(SqlConnection   connection,   CommandType   commandType,   string   commandText)
{
return   ExecuteDataset(connection,   commandType,   commandText,   (SqlParameter[])null);
}
public   static   DataSet   ExecuteDataset(SqlConnection   connection,   CommandType   commandType,   string   commandText,   params   SqlParameter[]   commandParameters)
{
SqlCommand   cmd   =   new   SqlCommand();
PrepareCommand(cmd,   connection,   (SqlTransaction)null,   commandType,   commandText,   commandParameters);
SqlDataAdapter   da   =   new   SqlDataAdapter(cmd);
DataSet   ds   =   new   DataSet();
da.Fill(ds);
get_sqlcommanBuilder(da);
cmd.Parameters.Clear();
return   ds;
}
public   static   void   get_sqlcommanBuilder(SqlDataAdapter   da)
{
SqlCommandBuilder   updatebuilder=new   SqlCommandBuilder(da);
}
public   static   object   ExecuteScalar(string   connString,   CommandType   cmdType,   string   cmdText,   params   SqlParameter[]   cmdParms)  
{
SqlCommand   cmd   =   new   SqlCommand();
using   (SqlConnection   conn   =   new   SqlConnection(connString))  
{
PrepareCommand(cmd,   conn,   null,   cmdType,   cmdText,   cmdParms);
object   val   =   cmd.ExecuteScalar();
cmd.Parameters.Clear();
return   val;
}
}


[解决办法]
Up
[解决办法]
数据库连接是非托管资源,所以要手动关闭。即对于SqlConnection,调用它的close和dispose方法。
public static int ExecuteNonQuery(string connString, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{

using (SqlConnection conn = new SqlConnection(connString))
{

}
}
public static int ExecuteNonQuery(SqlConnection conn, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{

}
如前一个方法,它用using语句保证调用完毕后数据库连接被释放,而后一个方法,是你传SqlConnection 对象进去,则你在调用后一个方法的时候要在外面释放数据库连接

[解决办法]
就是在调用之前应该先关闭你先前调用了的数据库连接
对数据库的连接要养成及时关闭,conn.close()释放资源,下次访问再打开conn.open()
打开了要记得关闭。

热点排行