C# C OleDbDataReader不返回记录,但手动sql返回记录
我有以下资料:C# C OleDbDataReader不返回记录,但手动sql返回记录,c#,sql,oracle,C#,Sql,Oracle,我有以下资料: try { string u = "select count(*) from my_table"; OleDbCommand runu = new OleDbCommand(u, connection); OleDbDataReader readu = runu.ExecuteReader(); if (readu.HasRows
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的连接并重新连接,并确保数据已提交
我也没有得到任何例外,我只是没有得到任何结果
谢谢,我注意到的第一件事是缺乏联系。打开;,然后我注意到,当您只检索一个值时,您正在以Execute.Reader的形式运行这个 我做了一点重写,在尝试之前添加int RowCount,添加connection.Open,然后通过ExecuteScalar命令设置其值,该命令只返回查询中的第一个值。我还移动了连接。靠近最后一个街区 我没有使用您的“按原样存在”,因为它似乎应该是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+整数。连接是否打开?有例外吗?正在记录什么异常?你调试代码了吗?没有异常我调用了连接。打开后,我将其包装在一个try-catch中,但没有异常我不完全确定这是怎么回事……如果我获取命令并将粘贴复制到sqldev中,它就可以工作了。我将尝试此操作,并发布结果,谢谢大家。如果您仍然有问题,请告诉我,或者如果对您有效,请将其标记为已回答。将其标记为已回答可以帮助我发现它实际上没有提交……我将数据导入数据库,但从未运行提交。谢谢你的帮助