6

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())リーダーがデータを保持していないため、その上で終了します。なにが問題ですか?ConnectionstringSELECTOracle Expressとともにインストールされるcommandpromptツールで同じことを実行しましたが、正常に動作します。

4

4 に答える 4

5

システムに接続するときに最初に行うことは、システムが成功したかどうかを確認/テストし、その後続行することです。これらの単純な種類のテストがなければ、アプリケーションは時限爆弾のように動作することになります。少し防御的なプログラミングを行うと、プロジェクトのデバッグがはるかに簡単になります。実際にはあなたが探している答えではありませんが、現在、接続の状態はクエリ実行時に明確ではありません。

于 2012-05-07T13:41:57.843 に答える
2

Table PersonsはSYSTEMスキーマにありますか?'select object_name from user_objects'のような別のクエリを実行し、実行した内容を更新してください。

于 2012-05-08T05:21:16.157 に答える
1

Oracleを.Netで使用していないので久しぶりですが、使用しているデータベースがわかりません(「xe」ですか?)。SQL Serverでは、接続文字列のINITIALCATALOGを使用して指定します。ここでは、さまざまな接続文字列を試すことができます:http: //www.connectionstrings.com/oracle。また、接続を開くことから始めます。

于 2012-05-14T09:37:40.137 に答える
1

パーティーに少し遅れましたが...

ビューへのアクセスで同じ問題が発生し、適切な権限がビューに付与されていないことが判明しました。ユーザーIDにSELECT権限を付与すると、データを取得できるようになります。

于 2012-10-03T14:57:13.027 に答える