读书人

ExecuteNonQuery 要求已打开且可用的连

发布时间: 2012-01-06 22:55:18 作者: rapoo

ExecuteNonQuery 要求已打开且可用的连接
.....
using System.Data.SqlClient;
/// <summary>
/// DbObject 的摘要说明
/// </summary>
///
namespace Shuihuren

//这里是我写的 以后用的
public SqlConnection Conn
{
get
{
SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString);
return conn;
}
}

public void Open()
{
SqlConnection conn = this.Conn;
conn.Open();
}
public int RunSQL(String sql)
{
SqlCommand cmd = new SqlCommand(sql);

this.Open();
cmd.Connection = Conn;
int a = cmd.ExecuteNonQuery();
return a;
}
}

//

页面代码
.....
using Shuihuren;

;...

protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
DBClass db = new DBClass();
string id = GridView1.DataKeys[e.RowIndex].Values.ToString();
string name = ((TextBox)GridView1.Rows[e.RowIndex].FindControl("TextBox1")).Text;

string sql = "update product set name='"+name+"' where id="+id+" ";

int a = db.RunSQL(sql);
GridView1.EditIndex = -1;
GridViewBind();
}

这样为什么说

ExecuteNonQuery 要求已打开且可用的连接。连接的当前状态为已关闭。

[解决办法]
public int RunSQL(String sql)
{
SqlCommand cmd = new SqlCommand(sql);

this.Open();
cmd.Connection = Conn;
int a = cmd.ExecuteNonQuery();
return a;
}
}
改为
public int RunSQL(String sql)
{
SqlCommand cmd = new SqlCommand(sql);

cmd.Connection = Conn;
comd.Connection.Open();
int a = cmd.ExecuteNonQuery();
return a;
}
}
PS:你的这段代码似乎结构上不太合理.参见SqlHelper
[解决办法]
同一个conn不可以同时打开两次的

读书人网 >asp.net

热点推荐