1

以下のコードを使用して、Oracle DBに接続し、クエリを実行します。この例で使用したクエリは、テーブルから行のセットをフェッチするだけです。ただし、「テーブルまたはビューが存在しません」というエラーメッセージが表示され続けます。しかし、私はテーブルがDBに存在することをかなり確信しています。どこが間違っているのですか?

 public void UpdateDatabase()
        {
            System.Data.OracleClient.OracleConnection conn = new System.Data.OracleClient.OracleConnection();
            conn.ConnectionString = "Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.144)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)));UID=mwm;PWD=mwm";
            conn.Open();
            OracleCommand command = conn.CreateCommand();
            command.CommandText = "Select * from Task"; 
            command.ExecuteNonQuery();
            command.Dispose();
        }

command.ExecuteNonQuery()に到達すると、エラーがトリガーされます。

4

2 に答える 2

1

タスクはoracleReserveWordです。そのため、このエラーが発生します。二重引用符を使用します。

command.CommandText = "Select * from \"Task\"";

ExectueNonQueryはエラーを出さないかもしれませんが、望ましい結果は得られません。command.ExecuteReaderを実行する必要があります。リンクを参照してください。

Oracle Data Provider for .NET(C#バージョン)入門もご覧いただけます。

于 2012-07-04T12:27:06.767 に答える
1

問題はcommand.ExecuteNonQuery();

実際にはここでクエリを実行しているため、DataAdapterまたはDataReaderのいずれかを使用する必要があります。

public void UpdateDatabase()
{
   System.Data.OracleClient.OracleConnection conn = new    System.Data.OracleClient.OracleConnection();
  conn.ConnectionString = "Data Source=(DESCRIPTION =(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.5.144)(PORT = 1521))(CONNECT_DATA =(SERVER = DEDICATED)(SERVICE_NAME = orcl)));UID=mwm;PWD=mwm";
     conn.Open();
     OracleCommand command = conn.CreateCommand();            
     SqlDataAdapter a = new SqlDataAdapter("Select * from \"Task\"", command))            
     DataTable t = new DataTable();
     a.Fill(t);
     command.Dispose();
}
于 2012-07-04T12:28:45.410 に答える