|
|||||
<このサンプルの概要> System.Data.OleDbを使用しアクセスMDBを操作するサンプル(C#.NET) です。 本サンプルはSystem.Data.OleDbの基本機能だけをシンプルにクラス化して、 ACCESS MDBを操作しています。 System.Data.OleDbは汎用のADOクラスですのでプロバイダを指定する事によって、 ACCESSでもORACLEでもSQLサーバでも同様にDB操作出来ます。 基本機能としてはアクセスMDB接続、MDB切断、MDB検索、MDB更新(レコード追加/更新/削除)、 トランザクション開始、コミット、ロールバックがあります。 これ以外の機能を使う事は殆ど無いと思います。 ところで、、、 このサンプルではプロバイダとしてMicrosoft.Jet.OLEDB.4.0を使用していますが、 これはx86(32ビット)でのみ有効でx64(64ビット)では使用出来ません。 x64(64ビット)のパソコンでMicrosoft.Jet.OLEDB.4.0を使用するためには、 x86(32ビット)モードでコンパイルする必要があります。 x86(32ビット)モードでコンパイルするためには、[プロジェクト]の[プロパティ]で [ビルド]の[プラットフォーム ターゲット]を[x86]にします。 データベース関係のその他のサンプル(VB6/VB.NET/C#.NET)はこちらです。 データベース関係のその他のサンプル(VB6/VB.NET/C#.NET) ★クラス(AccessMdb.cs) using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Data.OleDb; namespace Adodb { class AccessMdb { /// <summary> /// SQLコネクション /// </summary> private OleDbConnection _con = null; /// <summary> /// トランザクション・オブジェクト /// </summary> /// <remarks></remarks> private OleDbTransaction _trn = null; /// <summary> /// DB接続 /// </summary> /// <param name="dsn">データソース名</param> /// <param name="tot">タイムアウト値</param> /// <remarks></remarks> public void Connect(String dsn, int tot) { try { if (_con == null) { _con = new OleDbConnection(); } String cst = ""; cst = cst + "Provider=Microsoft.Jet.OLEDB.4.0"; cst = cst + ";Data Source=" + dsn; // データベースパスワードが設定されている場合 // cst = cst + ";Jet OLEDB:Database Password=xxxxx"; if (tot > -1) { //_con.ConnectionTimeout = tot; cst = cst + ";Connect Timeout=" + tot.ToString(); } _con.ConnectionString = cst; _con.Open(); } catch (Exception ex) { throw new Exception("Connect Error", ex); } } /// <summary> /// DB切断 /// </summary> public void Disconnect() { try { _con.Close(); } catch (Exception ex) { throw new Exception("Disconnect Error", ex); } } /// <summary> /// SQLの実行 /// </summary> /// <param name="sql">SQL文</param> /// <param name="tot">タイムアウト値</param> /// <returns></returns> /// <remarks></remarks> public DataTable ExecuteSql(String sql, int tot) { DataTable dt = new DataTable(); try { OleDbCommand sqlCommand = new OleDbCommand(sql, _con, _trn); if (tot > -1) { sqlCommand.CommandTimeout = tot; } OleDbDataAdapter adapter = new OleDbDataAdapter(sqlCommand); adapter.Fill(dt); adapter.Dispose(); sqlCommand.Dispose(); } catch (Exception ex) { throw new Exception("ExecuteSql Error", ex); } return dt; } /// <summary> /// トランザクション開始 /// </summary> /// <remarks></remarks> public void BeginTransaction() { try { _trn = _con.BeginTransaction(); } catch (Exception ex) { throw new Exception("BeginTransaction Error", ex); } } /// <summary> /// コミット /// </summary> /// <remarks></remarks> public void CommitTransaction() { try { if (_trn != null) { _trn.Commit(); } } catch (Exception ex) { throw new Exception("CommitTransaction Error", ex); } finally { _trn = null; } } /// <summary> /// ロールバック /// </summary> /// <remarks></remarks> public void RollbackTransaction() { try { if (_trn != null) { _trn.Rollback(); } } catch (Exception ex) { throw new Exception("RollbackTransaction Error", ex); } finally { _trn = null; } } /// <summary> /// デストラクタ /// </summary> /// <remarks></remarks> ~AccessMdb() { Disconnect(); } } } ★フォームモジュール(Form1.vb) using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace Adodb { public partial class Form1 : Form { public Form1() { InitializeComponent(); } // DB検索 private void button1_Click(object sender, EventArgs e) { AccessMdb db = new AccessMdb(); DataTable tb; db.Connect("db1.mdb", -1); tb = db.ExecuteSql("select col1,col2,col3 from test", -1); for (int i = 0; i <= tb.Rows.Count - 1; i++) { System.Diagnostics.Trace.WriteLine( tb.Rows[i]["col1"].ToString() + ":" + tb.Rows[i]["col2"].ToString() + ":" + tb.Rows[i]["col3"].ToString()); } db.Disconnect(); } // DB追加 private void button2_Click(object sender, EventArgs e) { AccessMdb db = new AccessMdb(); db.Connect("db1.mdb", -1); db.BeginTransaction(); db.ExecuteSql( "insert into test(col1,col2,col3) " + "values('1234567890',9,'2010-02-14 05:06:07')", -1); db.CommitTransaction(); db.Disconnect(); } // DB更新 private void button3_Click(object sender, EventArgs e) { AccessMdb db = new AccessMdb(); db.Connect("db1.mdb", -1); db.BeginTransaction(); db.ExecuteSql( "update test set col2=3,col3='2010-02-15 05:06:07' " + "where col1='1234567890'", -1); db.CommitTransaction(); db.Disconnect(); } // DB削除 private void button4_Click(object sender, EventArgs e) { AccessMdb db = new AccessMdb(); db.Connect("db1.mdb", -1); db.BeginTransaction(); db.ExecuteSql( "delete from test " + "where col1='1234567890'", -1); db.CommitTransaction(); db.Disconnect(); } } } |