2011-12-27 8 views
2

私はdatagridview vb.netで自分のテーブルのデータ型を表示しようとしています。以下はサンプルコードです:oracleクエリでデータ型のリストを表示する

 oradb = "Data Source=(DESCRIPTION=" _ 
     + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=" & txtServer1.Text & ")(PORT=" & port1.Value & ")))" _ 
     + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=" & txtSID.Text & ")));" _ 
     + "User Id=" & txtUsername1.Text & ";" _ 
     + "Password=" & txtPassword1.Text 
     Dim connOracle As New OracleConnection(oradb) 

     Try 
      connOracle.Open() 
      connOracle.Close() 
     Catch ex As Exception 
      MessageBox.Show(ex.Message.ToString()) 
     Finally 
     End Try 

     SQL = "desc hr.employees" 
     myCommand1.Connection = connOracle 
     myCommand1.CommandText = SQL 
     myAdapter1.SelectCommand = myCommand1 
     myAdapter1.Fill(myTablePreview) 
     DataGridView1.DataSource = myTablePreview 

私は「username」というユーザ名でログインしようとしています。このコードを実行すると、エラーメッセージ「ORA-00900:無効なSQL文」が表示されます。

私のクエリに問題はありませんか? pls helpmeありがとう.....

答えて

2

DESC(DESCRIBE)SQL * Plusコマンドではなく、SQLの動詞があるように、実際のクエリを実行します。 SQL * PlusはSQLのフロントエンド・ツールなので、いくつかのコマンドを追加します。これもその1つです。 OLE DBを使用する場合は、SQLを使用する必要があります。

あなたは、クライアントプログラムでは、このデータが必要な場合は、あなたが何かしようとする場合があります:

select * 
from all_tab_columns 
where table_name = '<your table name>' 

または、このように:

Select COLUMN_NAME 
from user_tab_columns 
where table_name='EMP' 

これはあなたの純粋な(オラクル)SQLであり、必要な列セットを取得するまで、SQL * Plusで試すことができます。

+0

がええそれは私が何を意味するかは全くのですが、私のコードにそのクエリに入れたときに、私は少し問題を抱えてあなたのランディを...ありがとうございました。 VB.Netは<'>符号を識別できません。その質問は今すぐコメントになります。 この問題を解決するにはどうすればよいですか? ありがとうございました。 – Flashidkz

+1

<あなたのテーブル名>は、それがどういう意味ですか? テーブルで変更することができます。 select * from all_tab_columns table_name = 'DEPT' – DevYudh

+0

いいえ、私はテーブル名の前後に< ' >の符号があることを意味します。テーブル名は – Flashidkz

4

DESCは、SQL PLusコマンドです。

はおそらく

select * 
from all_tab_cols 
where table_name = 'EMP' 
+0

yeahh

Devian Yudha、..私は何を意味するかだ :D は – Flashidkz