关于sqlhelper里边connection关闭问题
/// <summary>
/// 基于SQL命令或基于存储过程 实现数据库操作
/// </summary>
/// <param name="sql">insert,update,delete相关命令</param>
/// <returns>受影响的行数 int </returns>
public int ExcuteSQLReturnInt(string sql,SqlParameter[] pars,CommandType type)
{
//创建连接对象
SqlConnection conn = new SqlConnection(MyConnString);
try
{
//实例化命令对象
SqlCommand cmd = new SqlCommand(sql, conn);
//打开连接对象
if (conn.State == ConnectionState.Closed || conn.State == ConnectionState.Broken)
{
conn.Open();
}
#region 给命令对象参数集合添加参数
if (pars != null && pars.Length > 0)
{
foreach (SqlParameter p in pars)
{
cmd.Parameters.Add(p);
}
}
#endregion
cmd.CommandType = type;
int count = cmd.ExecuteNonQuery();
return count;
}
这是其中的一个方法,这里边没有关闭连接,这个有问题么???????
[解决办法]
建议用using(SqlConnection conn = new SqlConnection(MyConnString)){
try
{
//打开连接对象
if (conn.State == ConnectionState.Closed
[解决办法]
conn.State == ConnectionState.Broken)
{
conn.Open();
}
#region 给命令对象参数集合添加参数
if (pars != null && pars.Length > 0)
{
foreach (SqlParameter p in pars)
{
cmd.Parameters.Add(p);
}
}
#endregion
cmd.CommandType = type;
int count = cmd.ExecuteNonQuery();
return count;
}
catch (Exception ex)
{
conn.Close();
}
finally {
conn.Close();
}
}
}
将链接对象套起来,再catch 和finally 里面将链接释放到!
//实例化命令对象
SqlCommand cmd = new SqlCommand(sql, conn);
这个就不需要了。
[解决办法]
放100个心好了,如果用的是SQLHelper,里面应该有关闭的,自己看下代码就知道了,微软出的包,出问题的概率不会太大的,这东西好多人在用。没听谁说出过啥大问题,有问题的话先看自己的东东是不是完善了。