我刚刚安装了一个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一起安装的commandprompt工具中运行相同的SELECT
,它运行正常。
答案 0 :(得分:5)
当连接到任何系统时,首先要做的是查看/测试是否成功,然后继续。如果没有这些简单的测试,你的应用程序必然会像定时炸弹一样。一些防御性编程将使您的项目更容易调试。 不是你要找的答案,但目前查询执行时的连接状态并不清楚。
答案 1 :(得分:2)
Table Persons是否在SYSTEM架构中? 运行另一个查询,例如“从user_objects中选择object_name”,并向我们提供您已完成的更新。
答案 2 :(得分:1)
我已经很长时间没有使用.Net了,但是我没看到你使用的是哪个数据库(是“xe”?)。使用SQL Server,我在连接字符串中使用INITIAL CATALOG指定它。您可以在此处尝试使用不同的连接字符串:http://www.connectionstrings.com/oracle。我也会从打开连接开始。
答案 3 :(得分:0)
参加晚会但是......
我在访问视图时遇到了同样的问题,结果发现没有授予相应的权限。一旦我将SELECT权限授予我的用户ID,我就可以获得我的数据。