use*_*088 1 .net c# sql database ado.net
我在.NET 2.0中使用C#,我正在尝试访问和操作数据库.我可以根据需要从DB中读取多次,一切正常,但是一旦我尝试插入一个项目,我就会收到以下错误消息:
ExecuteNonQuery requires an open and available Connection. The connection's current state is closed.
Run Code Online (Sandbox Code Playgroud)
我试图查看这个,但我能找到的修复程序要么不起作用,要么不适用.
我有以下代码:
using (SqlConnection conn = new SqlConnection(SQLConnectionString))
{
SqlDataAdapter dataAdapter = new SqlDataAdapter("SELECT [Col1] FROM [Table1] WHERE [Col2]='" + val2 + "'", conn);
DataSet dataSet = new DataSet();
dataAdapter.Fill(dataSet);
if (dataSet.Tables.Count == 0 || dataSet.Tables[0].Rows.Count != 1)
{
SqlCommand cmd = new SqlCommand("INSERT INTO [Table1] ([Col1], [Col2]) VALUES ('" + val1 + "', '" + val2 + "')", conn);
cmd.ExecuteNonQuery();
}
}
Run Code Online (Sandbox Code Playgroud)
注意:我确定我已正确设置权限,因为Visual Studio可以插入相同的SQLConnectionString.另外,我对数据库还是比较陌生的,所以如果我做了一些非常错误的事情,请告诉我.
谢谢.
在.Fill()开启,如果它是不开放的连接,然后关闭它,它的完成后(只有当它没有打开它本身).这就是Fill确实有效的原因.请参阅MSDN.
但是.ExecuteNonQuery()不这样做,所以你需要手动打开连接,用
conn.Open();
Run Code Online (Sandbox Code Playgroud)
要么在ExecNonQuery之前,要么在填充之前.
当您使用"使用块"时,您不需要显式关闭()连接,但这不会是错误的.
| 归档时间: |
|
| 查看次数: |
1025 次 |
| 最近记录: |