我有以下内容:
try
{
string u = "select count(*) from my_table";
OleDbCommand runu = new OleDbCommand(u, connection);
OleDbDataReader readu = runu.ExecuteReader();
if (readu.HasRows)
{
while (readu.Read())
{
exists = readu[0].ToString();
}
readu.Dispose();
}
connection.Close();
}
catch (Exception g)
{
OraLog.log(g.ToString());
}
如果我抓住select语句并通过SQLDeveloper运行它,我会得到记录。
我在其他事情上使用了相同的代码块,但它工作正常,但这一次...由于某种原因,它不会返回任何记录。
我已重新连接SQLDeveloper并确保数据已提交。
我也没有任何例外,我只是没有结果。
谢谢,
答案 0 :(得分:0)
我注意到的第一件事是缺少connection.Open();
,然后我注意到当你只检索一个值时,你以Execute.Reader()
运行它。
我做了一点改写,在尝试之前添加int RowCount
,添加connection.Open()
然后从ExecuteScalar()
命令设置其值,这将返回第一个值来自查询。我还将connection.Close()
移到了finally
区块。
我没有使用你的exist
,因为它似乎应该是bool
而不是字符串,你可以添加任何支持代码来使用RowCount做你想做的事情值。
int RowCount;
try {
connection.Open();
string u = "select count(*) from my_table";
OleDbCommand runu = new OleDbCommand(u, connection);
RowCount = (int)runu.ExecuteScalar();
}
catch (Exception g) { /* unchanged */ }
finally { connection.Close(); }
如果命令失败,RowCount将等于 null ,并且表中包含多行的0 +整数。