- - PR -
Select文を利用してDataGridにデータを表示したい
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-10-24 11:20
dsにfillするなら、DataSourceにはdsを設定しましょう。 userRegDSをDataSourceに設定するなら、userRegDSにFillしましょう。 | ||||
|
投稿日時: 2005-10-24 13:48
NAL-6295さん
ご指摘ありがとうございます。 SqlConnection sqlcon = new SqlConnection(); sqlcon.ConnectionString = "connectionString(接続するためのストリング)"; SqlDataAdapter sqlda = new SqlDataAdapter ("SELECT * FROM tableName WHERE (a = 1) AND (b = 2) AND (c = 3) AND (d = 4)",sqlcon); sqlda.Fill(ds); DataGrid1.DataSource = ds; DataGrid1.DataBind(); で、dsにFillしました。 | ||||
|
投稿日時: 2005-10-24 14:03
はなです。
質問です。 sqlcon.Open(); sqlcon.Close(); というステートメントが、ない、ということが、 うまくデータベースからデータをSELECT出来ない理由ってことはあるのでしょうか? この sqlcon.Open(); sqlcon.Close(); が書かれている場合と書かれていない場合の例を見るのですが、この違いは何なのでしょうか? すみませんが、ご教授お願いいたします。 | ||||
|
投稿日時: 2005-10-24 14:19
こんにちわ。
DataAdapterのFillメソッドはなかなか賢くて、 接続が開いていない場合は勝手に接続して実行後切断してくれる、 接続が既に開いている場合はその接続を使い、実行後も接続を保持する、 というつくりになっています。 あらかじめ接続するのは、同じ接続を使って複数のSELECT文を実行したい時などに使います。 ただし、確実に切断するため、try〜finallyを使うのが一般的です。 DataAdapterについてはADO.NET基礎口座の第4章がおすすめです。 | ||||
|
投稿日時: 2005-10-24 15:41
ぼのぼのさん
ありがとうございます。 DataAdapterのFillメソッドはなかなか賢くて、 接続が開いていない場合は勝手に接続して実行後切断してくれる、 接続が既に開いている場合はその接続を使い、実行後も接続を保持する、 というつくりになっています。 ということですが、私のコードにBreakを張って確認したところ、sqlConnectionのstateがclosedになっていました。 これがきちんとSELECT文でデータをセレクトできない理由の一つになりうるのでしょうか? ちなみに、 sqlcon.Open(); sqlcon.Close(); をコードに入れると、sqlConnectionのstateはOpenになっていました。 よろしくお願いいたします。 | ||||
|
投稿日時: 2005-10-24 16:13
NAL-6295です。
そういえば、DataSourceにDataSetを設定する場合、 DataMemberプロパティに表示したいテーブル名を設定する必要があったように思いますが、 そちらは設定されているのでしょうか。 | ||||
|
投稿日時: 2005-10-24 16:25
はなです。
NAL-6295さん お返事ありがとうございます。 DataMemberプロパティというのは、DataGridのプロパティでよいでしょうか? それでしたら、テーブル名が設定されていました。 よろしくお願いいたします。 | ||||
|
投稿日時: 2005-10-25 16:47
接続して切断するのは、Fillメソッドの内部ですから、これは正しい動作です。 なので原因は他のところにあると思います。ほんとにセレクトできてないのかな? 試しに、画面上に一時的にラベルを二つ置いて、sqlda.Fill(ds); の後に、 Label1.Text = ds.Tables(0).TableName; Label2.Text = ds.Tables(0).Rows.Count.ToString(); て書いてみてください。ラベルにはなんて表示されますか? |