2011-04-25 17 views
0

私はOracleには新しく、Oracle 10g XEと.NET用ODACパッケージをインストールしました。 私はVBで単純な接続とテーブル取得のアプリケーションを作っていますが、常に「テーブルが見つかりません」というエラーがスローされます。ODP.net + VB =テーブルが見つかりません

私は、Oracleホーム(Web管理の事)での「テスト」の表を作成し、ここで私はVBで使用しているコードは次のとおりです。

Dim oraCmd As New OracleCommand("Select * From Test") 
    oraCmd.Connection = oraCon 

    oraCon.Open() 

    oraCmd.ExecuteReader() 
    'Reader code supressed 

EDIT私は、データベース内の同じクエリをしようとするとホーム、それは動作します。

+0

適切なデータベースで接続文字列を確認してください。 – Jack

+0

接続文字列を投稿できますか? –

+0

作成したテーブルで、適切なユーザーに接続していますか? – V4Vendetta

答えて

-1

oracleで別のユーザーを使用してログインしていて、別のユーザーの表から読み取る場合は、表名を完全修飾する必要があります。あなたのテーブルは、「TEST_USER」という名前のユーザの下に作成されている場合は、「TEST_USER.test SELECT * FROM」テーブルが作成されたのと同じユーザ名でログインしたときにこれが私の作品

として、あなたのテーブルをクエリ:

private const string connString = "DATA SOURCE=//server:port/service_name;PASSWORD=pswd;USER ID=user_name;"; 

    static void Main(string[] args) 
    { 
     OracleConnection conn = new OracleConnection(connString); 
     conn.Open(); 

     OracleCommand cmd = new OracleCommand("select * from test", conn); 

     // This would also work if the username I used to login was "TEST_USER". 
     // OracleCommand cmd = new OracleCommand("select * from TEST_USER.test", conn); 

     cmd.ExecuteReader(); 

     conn.Close(); 
    } 

その他の可能性のある問題は、データベースで "TEST"という名前ではなく、小文字を "Test"として名前を付けたことです。その場合は、次のような、それを囲む引用符を使用してテーブルを参照する必要があります:

static void Main(string[] args) 
    { 
     OracleConnection conn = new OracleConnection(connString); 
     conn.Open(); 

     OracleCommand cmd = new OracleCommand("select * from \"Test\"", conn); 
     cmd.ExecuteReader(); 

     conn.Close(); 
    } 

またはケースが問題であり、あなたはそれをこのように解決したい場合にも、オラクルでは、あなたのテーブルの名前を変更できます。

ALTER TABLE "Test" RENAME TO TEST; 
+0

オラクルがテーブル名またはカラム名で大文字と小文字を区別しないと思わない – V4Vendetta

+0

はい、これは動作します: CREATE TABLE TEST_TABLE(ID NUMBER); テーブル "Test_Table"(ID番号)を作成します。 CREATE TABLEが成功しました。 CREATE TABLEは成功しました。 – mservidio

+0

ありがとう、これはうまくいった!皆さん、お返事もありがとう! – Carlitrosss

関連する問題