【发布时间】:2012-05-14 01:14:06
【问题描述】:
我刚刚安装了一个 Oracle express 数据库,并试图从我放入的表中读取一些数据:
using (OracleConnection conn = new OracleConnection("Data Source=localhost:1521/xe;Persist Security Info=True;User ID=SYSTEM;Password=SYSTEMPASSWORD"))
{
OracleCommand command = new OracleCommand("SELECT * FROM Persons WHERE Firstname = 'John'", conn);
conn.Open();
OracleDataReader reader = command.ExecuteReader();
try
{
while (reader.Read())
{
string strResult = reader.GetString(0);
}
}
catch (OracleException oex)
{
MessageBox.Show(oex.Message, "Oracle error");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error");
}
finally
{
reader.Close();
}
}
在while (reader.Read()) 上它只是退出,因为阅读器不保存任何数据。怎么了? Connectionstring?我在与 Oracle express 一起安装的命令提示符工具中运行了相同的 SELECT,它工作正常。
【问题讨论】:
-
您确定连接已正确打开并且 ExecuteReader 可以正常工作吗?您是否在赋值之后和进入 while 循环之前放置了断点并检查了 reader 对象的值?
-
如果您将在 sqlplus 或任何其他工具中运行,此选择是否返回任何行?
-
@Jason94 永远不要捕获 System.Exception - 它可能是 OutOfMemoryException 或 StackOverflowException,这可能会在以后导致意外的副作用。
-
天啊所有这些愚蠢的建议,将
OracleDataReader reader = command.ExecuteReader();放入 Try-Catch 并告诉我们异常消息,或者如果它是第二次机会异常,则告诉我们错误代码...... -
我不明白为什么你会提供赏金而不回应评论中的问题或答案中的建议。