2017-08-14 16 views
0

おはようございます。C#API経由でOracleデータベースに問い合わせることができません

設定したOracleデータベースに接続しようとしています。私が詳細に入る前に、ここでのコードは次のとおりです。

//string was slightly altered. 
string connectionString = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=127.0.0.1)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=name)));User Id = system; Password = mypass; ";  
string toReturn = "D.BUG-";  
using (OracleConnection oracleConnection = new OracleConnection(connectionString))  
{  
    oracleConnection.Open();  
    using (OracleCommand oracleCommand = new OracleCommand())  
    {  
     oracleCommand.Connection = oracleConnection;  
     oracleCommand.CommandText = "SELECT lixo FROM lixeira WHERE lixo IS NOT NULL";  
     oracleCommand.CommandType = CommandType.Text;  
     using (OracleDataReader oracleDataReader = oracleCommand.ExecuteReader())  
     {  
      //This point IS reached! 
      while (oracleDataReader.Read())  
       //This point is never reached... 
       toReturn += oracleDataReader.GetString(0);  
     }  
    }  
}  
return toReturn; 

は今、私は作品を接続するという事実を知っている、と私はテーブルの「lixeira」は見つけることができるという事実を知っています。私はその名前を別の名前に変更し、対応する "私はそのテーブルを見つけることができません"という例外を調べることでこれをテストしました。

'ORA-00942: tabela ou visualização não existe'. (Table or View does not exist) 

問題はこのコードを読み取ることができないことです。 SQL Developer screenshot of the same query

したがって、私はoracleDataReader.Read()がうまく動作しない理由を忘れてしまいました。私は何か間違っているのですか?

+2

テーブルは存在しますが、それは...奇妙な存在していない、あなたは(あなたの接続文字列内)のC#からログインユーザーが必要な権限を持っていることを確認していますか? –

+0

....。それでおしまい。あなたはこれを回答として掲示することができます、私はそれを受け入れるでしょう。どうもありがとうございました。 – Cloud

+0

あなたの幸せ、私たちはお互いを助けるためにここにあります:) –

答えて

1

接続文字列のユーザー/パスワードが正しいことを確認してください。表が存在するが、存在しない場合は

...それはおそらく、あなたの現在のユーザーのために存在していない(=そのユーザが必要な権限をしていない)

0

前の答えは、私は別のものを追加してい、正しいですビット。 は、次のようにクエリを置き換えることができます。

SELECT lixo FROM <table owner>.lixeira WHERE lixo IS NOT NULL 

これは、あなたが不足しているもので、より適切なエラーが発生します。 おそらく許可(許可選択)問題です。

  • Abhi
+0

私は個人的にこれを確認しました。ありがとうございました。新しいユーザーを作成してテストを進めるうちに、そのエラーははるかにはっきりしていました。 'ORA-01045:ユーザーC## CLOUDにはCREATE SESSION権限がありません。ログオンが拒否されました。 – Cloud

+0

そして、C#CLOUDからのSELECT許可を訂正すると、報告されたエラーは 'ORA-01031:privilégiosinsuficientes'でした。 (権限が不十分です)。 これは、はるかにデバッグに便利なエラーです。 – Cloud

関連する問題