OLE DBConnectionとSQLConection - C#

OLE DBと言えば、

データベースの種類によらず統一的な手法でデータベースにアクセスするためのプログラミングインターフェース...
引用:IT用語辞典 
要はデータベースの種類が変わっても基本的には同じ方法でプログラミングできるということなんですが、では...
データベースは同じでも異なる接続でデータベースとやり取りすると書き方は変わってしまうのだろうか?

Sample Code

using System;
using System.Data;
using System.Data.OleDb;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data.Common;

namespace DataBaseConnect
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            //1. コネクションの作成と設定を行う
            //コネクションインスタンスを生成する
            using (OleDbConnection connection = new OleDbConnection())
            {
                //接続文字列を指定
                connection.ConnectionString = GetOLEDBConnectionString();


                //2. データアダプタの作成と設定を行う
                //データアダプタのインスタンスを生成する
                OleDbDataAdapter dataAdapter = new OleDbDataAdapter();

                //データを取得するためのSQL文を作成し、指定する
                OleDbCommand command = new OleDbCommand("SELECT * FROM PRODUCTS");
                dataAdapter.SelectCommand = command;

                //データアダプタのコネクションの設定
                dataAdapter.SelectCommand.Connection = connection;

                //DataTableMappingの作成とデータアダプタのTableMappingの指定
                DataTableMapping mapping = new DataTableMapping("Table", "Products");
                dataAdapter.TableMappings.Add(mapping);


                //データセットの生成
                DataSet dataSet = new DataSet();


                // 4. データセットにデータを取得する
                dataAdapter.Fill(dataSet);


                // 5. データセットからテーブルを取得する
                DataTable dataTable = dataSet.Tables["Products"];


                // 6. DataGridViewにデータを表示する
                dataGridView1.DataSource = dataTable;
            }
        }






        private void button2_Click(object sender, EventArgs e)
        {
            using (SqlConnection connection = new SqlConnection())
            {
                connection.ConnectionString = GetSQLConnectionString();

                SqlDataAdapter dataAdapter = new SqlDataAdapter();

                SqlCommand command = new SqlCommand("SELECT * FROM PRODUCTS");
                dataAdapter.SelectCommand = command;

                dataAdapter.SelectCommand.Connection = connection;

                DataTableMapping mapping = new DataTableMapping("Table", "Products");
                dataAdapter.TableMappings.Add(mapping);

                DataSet dataSet = new DataSet();
                dataAdapter.Fill(dataSet);

                DataTable dt = dataSet.Tables["Products"];
                dataGridView1.DataSource = dt;
            }
        }




        private static string GetOLEDBConnectionString()
        {
            return
                "Provider=SQLOLEDB;" +
                @"Data Source=.\SQLEXPRESS;" +
                @"Initial Catalog=|DataDirectory|\ NORTHWND.mdf;" +
                "Integrated Security = SSPI;";
        }



        private string GetSQLConnectionString()
        {
            SqlConnectionStringBuilder builder = new SqlConnectionStringBuilder();
            builder.DataSource = @".\SQLEXPRESS";
            builder.AttachDBFilename = @"|DataDirectory|\NORTHWND.mdf";
            builder.IntegratedSecurity = true;
            builder.UserInstance = true;

            return builder.ConnectionString;
        }
    }
}

つまりやっていることほぼ同じ。

SQL Serverのデータベースを扱うのにわざわざOLEDB何ぞ使わずともほぼ同じ方法(処理)で出来ちゃうわけですね。

つまり、SQLConnectionとOLEDBConnectionとで大きな違いがないなら、ワザワザ分ける意味は何処に...

そもそもOLE DBでSQL Severのデータベースを扱えるメリットが分からない、ということでした。

0 Comments:

Recent Posts