朧の.Netの足跡
問合せ先:support@oborodukiyo.info サイト内検索はこちら
ADO.NET AccessデータベースでのSQL文内のパラメータの使い方





Accessデータベースでは、SQL文内でパラメータの所には?だけで指定します。
複数のパラメータを利用する時でも全て?です。
.Netでは、Accessデータベース用のパラメータ変数の型は、OleDbParameter型です。
基本はその型の変数に、ParameterNameプロパティとValueプロパティを指定して、SQLコマンドに登録することで利用可能です。
ただパラメータはSQL文内で全て?なので、SLQコマンドに登録されるパラメータの順番に対応していきます。

C#

//Accessファイルなのでこれを設定します。
using System.Data.OleDb;

namespace ADONET_AccessWithParameters
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            DataTable dt = new DataTable();
            //Accessへの接続情報の設定をします。
            OleDbConnectionStringBuilder builder = new OleDbConnectionStringBuilder();
            //Access2007形式のファイルなのでこれを設定します。
            builder.Provider = "Microsoft.ACE.OLEDB.12.0";
            //Accessファイルへのパスを設定します。
            builder.DataSource = "G:\\Database1.accdb";
            //接続情報を使ってコネクションを生成します。
            using (OleDbConnection conn = new OleDbConnection(builder.ConnectionString))
            {
                //SQL文とコネクションを設定します。
                using (OleDbCommand cmd = new OleDbCommand("SELECT * FROM T1 WHERE price BETWEEN ? AND ?", conn))
                {
                    //パラメータの作成
                    OleDbParameter prmtr1 = new OleDbParameter();
                    OleDbParameter prmtr2 = new OleDbParameter();
                    //パラメータ名は好きな名前を指定します。
                    prmtr1.ParameterName = "1";
                    prmtr2.ParameterName = "2";
                    //パラメータの値を設定します。
                    prmtr1.Value = "100000";
                    prmtr2.Value = "150000";
                    //パラメータをコマンドに追加します。
                    cmd.Parameters.Add(prmtr1);
                    cmd.Parameters.Add(prmtr2);
                    //Accessファイルへの橋渡しのアダプターを設定します。
                    OleDbDataAdapter odda = new OleDbDataAdapter();
                    //SELECTコマンドを設定します。
                    odda.SelectCommand = cmd;
                    //SELECTの実行及びフェッチ
                    odda.Fill(dt);
                    //グリッドに表示します。
                    dataGridView1.DataSource = dt;
                }
            }
        }
    }
}
        

VB.NET

'Accessファイルなのでこれを設定します。
Imports System.Data.OleDb

Public Class Form1
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Dim dt As DataTable = New DataTable()
        'Accessへの接続情報の設定をします。
        Dim builder As OleDbConnectionStringBuilder = New OleDbConnectionStringBuilder()
        'Access2007形式のファイルなのでこれを設定します。
        builder.Provider = "Microsoft.ACE.OLEDB.12.0"
        'Accessファイルへのパスを設定します。
        builder.DataSource = "G:\\Database1.accdb"
        '接続情報を使ってコネクションを生成します。
        Using conn As New OleDbConnection(builder.ConnectionString)
            'SQL文とコネクションを設定します。
            Using cmd As New OleDbCommand("SELECT * FROM T1 WHERE price BETWEEN ? AND ?", conn)
                'パラメータの作成
                Dim prmtr1 As OleDbParameter = New OleDbParameter()
                Dim prmtr2 As OleDbParameter = New OleDbParameter()
                'パラメータ名は好きな名前を指定します。
                prmtr1.ParameterName = "1"
                prmtr2.ParameterName = "2"
                'パラメータの値を設定します。
                prmtr1.Value = "100000"
                prmtr2.Value = "150000"
                'パラメータをコマンドに追加します。
                cmd.Parameters.Add(prmtr1)
                cmd.Parameters.Add(prmtr2)
                'Accessファイルへの橋渡しのアダプターを設定します。
                Dim odda As OleDbDataAdapter = New OleDbDataAdapter()
                'SELECTコマンドを設定します。
                odda.SelectCommand = cmd
                'SELECTの実行及びフェッチ
                odda.Fill(dt)
                'グリッドに表示します。
                DataGridView1.DataSource = dt
            End Using
        End Using
    End Sub
End Class
        








良いやや良い普通やや悪い悪い

投稿日時評価コメント