質問: command; adapter.Fill(ds); command.Dispose(); connection.Close(); connection.Dispose(); } } } ``` 上記のコードで正しいかと思ったのですが、VisualStudioでデバックボタンを開始した後に、DataSetにカーソルを当ててクイックビューを見ても、空と表示されます。 DataSetを作っただけでは空だから、元のデータベースに合わせてDataSetにも4つの列を含んだテーブルなどを作成する必要があるということでしょうか? それとも、テーブルは自動で作ってくれて他に間違っているところがあるのでしょうか? 何かおかしい点などがあれば、是非教えて頂きたいです。 よろしくお願いします。
回答: エラーが出ないのであれば可能性の高そうなものは次の二つです。 1 そのイベントハンドラが呼ばれていない ボタンの Click イベントに関連付けましょう。 イベントハンドラの行頭にブレークポイントを置いてそこで止まるかどうか確かめましょう。 2 データベースが空 まずデータを入れましょう。 エラーが出るのであればエラーメッセージと行番号がソースのどこにあたるのかを書いてください。 追記 もう一つ。 DataSet がイベントハンドラの中だけで使われています。 このハンドラが終わると破棄されます。 ハンドラの最終行にブレークポイントを置いて確かめてみてください。 追記 データが入っているかどうか MessageBox で出してみましょう。 ついでに using を使って書き換えてみました。 イベントハンドラを次のように書き換えて試してみてください。 ``` var connectionString = "data source ='SQL Serverのサーバ名';initial catalog = 'SQL Serverのデータベース名前'; Integrated Security = True;Connection Timeout = 10;MultipleActiveResultSets = True"; var sqlString = "SELECT 商品コード,商品名,価格,単位 FROM testItem"; using (var connection = new SqlConnection(connectionString)) using (var command = new SqlCommand() { Connection = connection, CommandText = sqlString }) using (var adapter = new SqlDataAdapter() { SelectCommand = command }) { connection.Open(); DataSet ds = new DataSet(); adapter.Fill(ds); MessageBox.Show(ds.Tables[0].Rows.Count.ToString()); } ```