【发布时间】:2019-03-28 13:40:19
【问题描述】:
我有这个查询,ExecuteReader,其中有两个ExecuteNonQuery。它什么也没做。我试图将两个executeNonQuery 放在cmd1 和cmd2 下,但它不允许这样做,因为executeReader 是打开的。我需要采取哪些步骤来纠正此问题?
private void btnSTART_Click(object sender, RoutedEventArgs e)
{
sqliteCon.Open();
if (sqliteCon.State == System.Data.ConnectionState.Open)
{
string path = null;//estrazione1
SqlCommand cmd = new SqlCommand("select nomeI FROM tabL where selection=1", sqliteCon);
SqlDataReader nomeIRdr = null;//estrazione2
nomeIRdr = cmd.ExecuteReader();//estrazione3
while (nomeIRdr.Read())//estrazione4
{
path = nomeIRdr["nomeI"].ToString();//estrazione5
}
using (nomeIRdr = cmd.ExecuteReader())//cmd.ExecuteReader() gives me the error cmd doesn't exist in the current
{
sqliteCon.Open();
if (sqliteCon.State == System.Data.ConnectionState.Open)
{
Process MyProc = Process.Start(path);//permette la run del path contenuto nel db
MyProc.WaitForExit();
var exitCode = MyProc.ExitCode;
if (exitCode == 1)
{
SqlCommand cmd1 = new SqlCommand("insert into tabL resI values 'PASS'", sqliteCon);
cmd1.ExecuteNonQuery();
}
else
{
SqlCommand cmd2 = new SqlCommand("insert into tabL resI values 'FAIL'", sqliteCon);
cmd2.ExecuteNonQuery();
}
}
sqliteCon.Close();
}
MessageBox.Show("Items Started");
}
sqliteCon.Close();
}
如果解决方法无效,则与该问题开头的错误相同
【问题讨论】:
-
如果我没记错的话,你不能在没有处理阅读器的情况下使用连接,所以你必须为每个
cmd1和cmd2创建一个新的连接 -
它是关于连接...要么使用不同的(一个连接用于 rader,另一个用于插入)或允许此连接具有多个活动结果集(如果它是 mssql)...当您使用时很容易找到会谷歌你的 excpetion ...
-
当 o 运行代码时,只需 cmd 和 cmd1 什么都不做
-
...无论如何...我根本不建议这样做...而是使用阅读器来填写一些列表...关闭阅读器...然后迭代列表并做这些事情跨度>