前回は全てのmeiboテーブルを取得しました。
前回データベースを接続する。
しかしデータが入っていなかったので空でしたね。
今回はtextboxから指定して検索します。
とりあえずデータを登録してみましょう。
SQLManagementStudioを起動してmeiboテーブルで右クリックして上位200行から編集します。
テキストボックスとボタンを追加します。
テキストボックスに入力してボタンを押したら
グリットビューに表示されるようにしましょう。
前回からどこを変えたらいいかわかりますか?
前回のサンプルソース
Imports System.Data.SqlClient
Public Class Form1
Dim cn As New SqlConnection( _
“Data Source=(local)\SQL;” + _
“Initial Catalog=ADO;” + _
“Integrated Security=True;Pooling=False”)
Dim adapter As New SqlDataAdapter( _
“select * from meibo”, cn)
Dim table As New DataTable()
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
adapter.Fill(table)
DataGridView1.DataSource = table
End Sub
End Class
まず検索するSQL文を考える。
タイミングを考える今回はボタンがクリックされた時。
空文字とかのエラー対応を考える。
空文字ならif文判定して
テキストボックスが空ですを表示しましょう?
If TextBox1.Text = “” Then
MsgBox(“テキストボックスが空です”)
Exit Sub
End If
それとSQLインジェクションの特殊文字対応も考えましょう?
今回はSQLCommandクラスを使用してみましょう。
Dim cmd As New SqlCommand(“select * from meibo where number = @number”, cn)
sql文はwhere句で絞ってますね。
ついでにコネクションクラスでデータベースに接続してます。
パラメータをコマンドに設定してます。
cmd.Parameters.Add(New SqlParameter(“@number”, TextBox1.Text))
前回のソースからコネクションは削除してますね。
SQL文はコマンドを経由してます。
Dim adapter As New SqlDataAdapter(cmd)
これで完成です。
テキストボックスに1を入力しましたら登録してあるので表示されます。
データベースにない2などは空で表示されます。
データベースにないあるかはSQLを投げないとわからないので
今回は考えないものをします。
今回のサンプルソース
Imports System.Data.SqlClient
Public Class Form1
Dim cn As New SqlConnection( _
“Data Source=(local)\SQL;” + _
“Initial Catalog=ADO;” + _
“Integrated Security=True;Pooling=False”)
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
If TextBox1.Text = “” Then
MsgBox(“テキストボックスが空です”)
Exit Sub
End If
Dim cmd As New SqlCommand(“select * from meibo where number = @number”, cn)
cmd.Parameters.Add(New SqlParameter(“@number”, TextBox1.Text))
Dim adapter As New SqlDataAdapter(cmd)
Dim table As New DataTable()
adapter.Fill(table)
DataGridView1.DataSource = table
End Sub
End Class
テキストボックスとボタンを配置して
クリックされた時にコピペして3行変更するだけですよ。
今回は簡単すぎましたね。