ITコンサルの日常

ITコンサル会社に勤務する普通のITエンジニアの日常です。

Accessデータベースに接続する

プログラミングC# p371

OleDbDataAdapterを使います。

using System;
using System.Data;
using System.Data.OleDb;

class ReadMdb
{
        static void Main(string[] args)
        {
                OleDbDataAdapter oda = new OleDbDataAdapter("select * from emp",
 "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\db1.mdb");

                DataSet dataSet = new DataSet();

                oda.Fill(dataSet, "emp");

                DataTable dataTable = dataSet.Tables[0];

                foreach(DataRow dataRow in dataTable.Rows)
                {
                        Console.WriteLine(dataRow["emp_id"] + " / " + dataRow["e
mp_name"]);
                }
        }
}

結果はこう。

1 / Tom
2 / Bob
3 / Michael

emp表の中身が全件表示されます。(中身はテキトー)


ちなみにOdbcを使ってアクセスする場合は、OdbcDataAdapterを使います。
以下の例では、db1.mdbODBCデータソース名hogeで登録してあります。

using System;
using System.Data;
using System.Data.Odbc;

class ReadMdb
{
        static void Main(string[] args)
        {
                OdbcDataAdapter oda = new OdbcDataAdapter("select * from emp", "
DSN=hoge");

                DataSet dataSet = new DataSet();

                oda.Fill(dataSet, "emp");

                DataTable dataTable = dataSet.Tables[0];

                foreach(DataRow dataRow in dataTable.Rows)
                {
                        Console.WriteLine(dataRow["emp_id"] + " / " + dataRow["e
mp_name"]);
                }
        }
}

結果は同じ。
ポイントは、DataAdapterを構築した後は、全く同じコードでいけるってところです。


ODBCなら、JDBC-ODBC ブリッジを使って、Javaからもアクセスできます。

import java.sql.*;

public class ReadMdb
{
        public static void main(String[] args) throws Exception
        {
                Connection con = null;
                Statement stmt = null;
                ResultSet rs = null;

                try
                {
                        Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
                        con = DriverManager.getConnection("jdbc:odbc:hoge");

                        stmt = con.createStatement();
                        rs = stmt.executeQuery("select * from emp");

                        while(rs.next())
                        {
                                System.out.println(rs.getInt("emp_id") + " / " +
 rs.getString("emp_name"));
                        }
                }
                finally
                {
                        if(rs != null)
                        {
                                rs.close();
                        }
                        if(stmt != null)
                        {
                                stmt.close();
                        }
                        if(con != null)
                        {
                                con.close();
                        }
                }
        }
}

結果はもちろん同じ。