VB.NET select 検索する

      2017/07/13


前回は全てのmeiboテーブルを取得しました。
前回データベースを接続する。
しかしデータが入っていなかったので空でしたね。
今回はtextboxから指定して検索します。
とりあえずデータを登録してみましょう。
SQLManagementStudioを起動してmeiboテーブルで右クリックして上位200行から編集します。

SQLManagementStudio
データを登録します。
SQLManagementStudio1

テキストボックスとボタンを追加します。
テキストボックスに入力してボタンを押したら
グリットビューに表示されるようにしましょう。
前回からどこを変えたらいいかわかりますか?

前回のサンプルソース
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を入力しましたら登録してあるので表示されます。

number

データベースにない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行変更するだけですよ。
今回は簡単すぎましたね。

PR



 - ADO.NET

Translate »