- - PR -
OracleからListBoxに値を追加する。
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-10-01 17:17
どうしても解決できないので投稿させていただきました。
Form1からテーブル名を取得し、取得したテーブル名のテーブルの列名をForm2のListBoxに表示させたいと考えております。開発環境はVB.NET2008、Oracle10gです。 'データベースから読み込んで表示する Try DMLList.DataBindings.Clear() Adapter = New OracleDataAdapter(Command, Connecter) Adapter.Fill(Setter, "TEST") Table = Setter.Tables("TEST") DMLList.DataSource = Setter.Tables(0) Me.DMLList.DisplayMember = "COLUMN_NAME" DMLList.ValueMember = "COLUMN_NAME" Catch ex As Exception '失敗 MessageBox.Show(ex.Message, "DBTableViewer") Finally If Not Connecter Is Nothing Then Connecter.Close() End If End Try Private Sub Form2_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim TableName As String Dim Command As String TableName = Form1.TableList.SelectedValue.ToString() Command = "SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME=''TEST''" ColumnGetter(Command, "TEST") End Sub 上記のように書いておりますと、「ORA-00933:SQLコマンドが正しく終了されていません。」というエラーが出力されます。確認事項は下記のとおりです。 @データベースへの接続確認済(.NETConfiguration Assistantおよび違うクラスでは接続できたため) ASQLはSQL*Plusで確認済(問題なく列名が表示されたため) BGetSchemaメソッドも使ってみたが、ListBoxに何も反映されなかった(エラーはなし) なお、SQLにForm1で取得したテーブル名を使用したいと考えておりますが、方法が分からないため便宜上"TEST"としております。 ご教授よろしくお願いいたします。 | ||||||||
|
投稿日時: 2008-10-01 19:33
> TABLE_NAME=''TEST''
ここが、本当にこう書いてあるなら、これが問題だと思います。シングル クォーテーションが2つなんだっけ?ダブル クォーテーション1つじゃなかったかなぁ? Form からもってくるのは、文字列連結でいいでしょう。 "SELECT... FROM """+TextBox1.Text+""" WHERE..." | ||||||||
|
投稿日時: 2008-10-02 09:48
Jittaさん、ご回答ありがとうございます。返信がおそくなってしまい、すみませんでした。
> TABLE_NAME=''TEST'' を下記のように書き直しましたところ、エラーが出力されてしまいました。 "SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME=""TEST""" 「ORA-00904:"TEST":無効な識別子です。」 申し訳ございませんが、再びご指導の程お願いいたします。 | ||||||||
|
投稿日時: 2008-10-02 10:12
連続投稿失礼いたします。
SQLを下記のように書き直したところ、列名がListBoxに表示されるようになりました。 "SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME='TEST'" また、Formからのテーブル名の取得は以下のような文字列連結で解決しました。 "SELECT COLUMN_NAME FROM ALL_TAB_COLUMNS WHERE TABLE_NAME='" + TableName.Text + "'" お騒がせして申し訳ございません。 本当にありがとうございました。 | ||||||||
|
投稿日時: 2008-10-02 10:15
これって具体的にどんなクエリで確認しましたか? ↓のようなクエリではありませんか?
文字列に含まれるシングルクォートは、エスケープする必要はないですよ。 なのでこれをそのままCommand変数に入れてあげれば大丈夫なのでは。 | ||||||||
|
投稿日時: 2008-10-02 11:55
「テーブル名だから囲まなきゃ」と、思い込んでいたorz
|
1