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.mdbをODBCデータソース名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(); } } } }
結果はもちろん同じ。