@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

comboBoxにSQLの結果を格納したい

1
投稿者投稿内容
ゆきお
常連さん
会議室デビュー日: 2003/12/17
投稿数: 22
お住まい・勤務地: 名古屋市
投稿日時: 2003-12-17 09:41
皆様初めまして。ゆきおといいます。

Oracleのデータディクショナリを検索するシステムをC#で作成しています。

comboBoxにSELECT文の結果を格納したいのですが、いまいち方法がわからなくて困ってい
ます。

【環境】
OS:Windows2000 SP4
Oracle:Oracle9i Release 9.2.0 トライアル版
言語:Visual C#.NET + Oracle Data Provider for .NET(ODP.NET)
.Net Framework v1.1

【ソースコード】

class ConnectOracleDB
{
  [STAThread]
  static void Main()
  {
    Application.Run(new Form1());
}
 
private void button1_Click(object sender, System.EventArgs e)
{
  // @ユーザーID、パスワード、データ・ソース(TNS)などの接続パラメータを設定
   // Create the connect object
   OracleConnection con = new OracleConnection();
   con.ConnectionString = "User Id=xxxx;Password=pppp;
Data Source=dddd;";

    // Instantiate OracleDataAdapter to create DataSet
    OracleDataAdapter myAdapter = new OracleDataAdapter();

// Fetch Product Details
myAdapter.SelectCommand = new OracleCommand
("SELECT * FROM v$instance",con);

DataSet myDataSet = new DataSet();

// A検索
myAdapter.Fill(myDataSet);

    // B質問箇所
this.comboBox1.DataSource = myDataSet
}
}

【質問事項】
OracleのDBまでの接続(@)と検索するコマンド(A)はわかっているのですが、comboBox
に格納する方法(B)がわかりません。どなたか教えてください。
junya_s0
常連さん
会議室デビュー日: 2002/12/23
投稿数: 26
投稿日時: 2003-12-17 10:00
this.comboBox1.DataBind();でしょうか。

MSDNのDropDownList.DataSourceのサンプルに書いてあります。
MSDN等調べてから質問したほうが良いと思いますよ。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-17 10:02
 そこまでできているなら後少し。
もう一度、MSDNの、ComboBox.DataSourceの説明を見直してみてください。

ヒント:
・DataSourceは、「テーブル」を指定するプロパティです
・とすると、「列」を指定するプロパティがあるはずです
・リストコントロールには、「表示用」と「値取得用」の、2つの「列」があります
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-17 10:09
引用:

junya_s0さんの書き込み (2003-12-17 10:00) より:
this.comboBox1.DataBind();でしょうか。

MSDNのDropDownList.DataSourceのサンプルに書いてあります。
MSDN等調べてから質問したほうが良いと思いますよ。


 DropDownListとcomboBoxは違うコントロールです。見かけは同じですけど。
System.Web.UI.WebControls.DropDownListにはDataBindメソッドがありますが、
System.Windows.Forms.ComboBoxにはないんです。
junya_s0
常連さん
会議室デビュー日: 2002/12/23
投稿数: 26
投稿日時: 2003-12-17 10:28
引用:
DropDownListとcomboBoxは違うコントロールです。見かけは同じですけど。



すっかり勘違いしてました。
最近、Web開発ばかりやっていて頭がそっちモードになってるもので。

見なかったことにしてください(汗
ゆきお
常連さん
会議室デビュー日: 2003/12/17
投稿数: 22
お住まい・勤務地: 名古屋市
投稿日時: 2003-12-17 11:24
junya_s0さん、Jittaさん返信ありがとうございます。ゆきおです。

引用:

 そこまでできているなら後少し。
もう一度、MSDNの、ComboBox.DataSourceの説明を見直してみてください。

ヒント:
・DataSourceは、「テーブル」を指定するプロパティです
・とすると、「列」を指定するプロパティがあるはずです
・リストコントロールには、「表示用」と「値取得用」の、2つの「列」があります



応援ありがとうございます。

ヒントですがうーんすいません。MSDNのListControl.DataSourceを確認したのですが、
「列を指定するプロパティ」とは何を意味するのでしょうか?「リストコントロールには、
「表示用」と「値取得用」の、2つの「列」があります」とはpublic object DataSource
{get; set;}のことでしょうか?この意味 {get; set;} がよくわかりませんです。

ちょっと以下のコードを入力してみました。

// B質問箇所
this.comboBox1.DataSource = myDataSet

結果はcomboBoxに何故かSystem.Data.DataRowViewと何列の表示されてしまいました。
以上途中経過です。もう少しがんばってみます。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-12-17 11:37
引用:

ゆきおさんの書き込み (2003-12-17 11:24) より:

ヒントですがうーんすいません。MSDNのListControl.DataSourceを確認したのですが、
「列を指定するプロパティ」とは何を意味するのでしょうか?


「解説」に、このように書いてありませんか?
引用:

たとえば、 Add メソッドを使用すると、オブジェクトを ComboBox に追加できます。 ComboBox を設定する DataSource 、 DisplayMemberValueMember の各プロパティを使用することによっても、オブジェクトを ComboBox に追加できます。


Display…表示する
Value…値

 DataSourceは、DataSet.Table[0]の方が良いかもしれません。
ゆきお
常連さん
会議室デビュー日: 2003/12/17
投稿数: 22
お住まい・勤務地: 名古屋市
投稿日時: 2003-12-17 13:40
Jittaさんどうもです。ゆきおです。

引用:

たとえば、 Add メソッドを使用すると、オブジェクトを ComboBox に追加できます。 ComboBox を設定する DataSource 、 DisplayMemberValueMember の各プロパティを使用することによっても、オブジェクトを ComboBox に追加できます。



わかりました。というかできました。

myAdapter.SelectCommand = new OracleCommand ("SELECT table_name FROM v$dictinary",con);

this.comboBox1.DataSource = myDataSet.Tables[0];
this.comboBox1.DisplayMember = "TABLE_NAME";

※DisplayMemberは大文字指定ではないと認識されませんでした。

以上のように修正すると見事表示ができました。Jittaさんのヒント形式って調べる作業が入るので非常に勉強になります。素晴らしいですね。

まだまだMSDNから情報を収集する能力が弱いので力をつけたいところです。

Jittaさんありがとうございます。おかげさまで3日ほど悩んだ内容がクリアできました。
1

スキルアップ/キャリアアップ(JOB@IT)