(VB.Net、SQL)OLEDBでのパラメータクエリ
.NetからOLE DBでmdb(Access)に対してパラメータクエリをする方法です。
OLEDBでは名前付きパラメータは使えず、パラメータの順序で対応するプレースホルダが決まるみたいなので注意が必要です。
(でも、パラメータに名前があっても問題は無いようです)
下記がVB.NetからOLEDBでクエリを投げる例です。
Dim cn As New OleDb.OleDbConnection cn.ConnectionString = m_adpCustomer.Connection.ConnectionString Dim cmd As New OleDb.OleDbCommand() cmd.Connection = cn 'SQL文字列生成 Dim strSQL As New System.Text.StringBuilder() strSQL.AppendLine("SELECT * ") strSQL.AppendLine("FROM Customer ") strSQL.AppendLine("WHERE CustomerNo>=?") strSQL.AppendLine(" AND CustomerNo<=?") 'パラメータクエリ(プレースホルダ)指定 Dim plam1 As New OleDb.OleDbParameter("@CondNoFrom", System.Data.OleDb.OleDbType.Integer) plam1.Value = "10" cmd.Parameters.Add(plam1) Dim plam2 As New OleDb.OleDbParameter("@CondNoTo", System.Data.OleDb.OleDbType.Integer) plam2.Value = "20" cmd.Parameters.Add(plam2) 'SQLコマンドの設定 cmd.Connection = cn cmd.CommandText = strSQL.ToString() Dim dAdp As New OleDb.OleDbDataAdapter(cmd) Dim dset As New DataSet() 'クエリ実行 dAdp.Fill(dset) For Each row As DataRow In dset.Tables(0).Rows Console.WriteLine(row(0).ToString()) Next
参考:
OleDb接続で、パラメータクエリ
【C#】【OLE DB】SQLを発行する際の名前付きパラメータ(プレースホルダ)