プログラム初心者です。
分からないことが多く、見苦しい点が多々あると思いますが、質問させて下さい。
目的
商品コードのテキストボックスに商品コードを入力後、検索ボタンをクリックし、データセットに一致したコードがあれば商品名、価格を各項目のテキストボックスに表示したい。
状況
Visual StudioのWindowsフォームアプリケーションから商品コード、商品名、価格のテキストボックスを画面に配置し、SQL Adapterを用いて、SQL Serverに作ったサンプルデータ(レコード数:3)をDataSetに持ってきた。
C#
1using System; 2using System.Collections.Generic; 3using System.ComponentModel; 4using System.Configuration; 5using System.Data; 6using System.Data.SqlClient; 7using System.Drawing; 8using System.Linq; 9using System.Text; 10using System.Threading.Tasks; 11using System.Windows.Forms; 12 13namespace WindowsFormsApp1 14{ 15 public partial class SqlCall : Form 16 { 17 public SqlCall() 18 { 19 InitializeComponent(); 20 SqlConnection connection = new SqlConnection("data source =<サーバ名>\SQLEXPRESS;initial catalog = <データベース名>; Integrated Security = True;Connection Timeout = 10;MultipleActiveResultSets = True"); 21 connection.Open(); 22 23 SqlCommand command = new SqlCommand(); 24 command.Connection = connection; 25 command.CommandText = "SELECT 商品コード,商品名,価格,単位 FROM <テーブル名>"; 26 27 DataSet ds = new DataSet(); 28 29 SqlDataAdapter adapter = new SqlDataAdapter(); 30 adapter.SelectCommand = command; 31 32 adapter.Fill(ds); 33 34 // データセットのレコード件数 35 MessageBox.Show(ds.Tables[0].Rows.Count.ToString()+"レコード取得しました。"); 36 37 connection.Close(); 38 } 39 40 private void dbSearch_Click(object sender, EventArgs e) 41 { 42 // 分からない部分 43 } 44 45 } 46}
上記のソースで「データセットのレコード件数」とコメントしてあるメッセージボックスでは、"3レコード取得しました。"と表示されるので、SQL Serverからデータセットにデータを持ってくる処理はできていると思います。
その次のイベントハンドラ内に書く処理がよく分かりません。
DataSetのインスタンスであるdsの中に、テーブルやカラムを作り、それを使ってレコードを特定する処理を書けば良いかと思ったのですが、イベントハンドラ内でdsと入力しても、上で作ったものとは別のDataSetになってしまいます。
同じクラス内だからdsはイベントハンドラ内でも使えるかと思ったのですが、使えないのでしょうか?
また、connection.closeでデータベースとの接続を閉じても、DataSetにはデータは残っているのでしょうか?
よく分からないので、お力を貸して頂きたいです。
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/26 07:16