<このサンプルの概要>
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();
}
}
}
|
|