C#用ソースコード


using System.Data;
using System.Data.Common;
using Oracle.DataAccess.Client;
using Oracle.DataAccess.Types;
リスト1 ODP.NETとファクトリクラスのインポート設定(C#)

public class DataAccess {
    //DB接続関連はクラスで保有
    DbProviderFactory  factory;
    DbConnection conn;
    DbConnectionStringBuilder ocsb;
    DbCommand cmd;    
    DbDataAdapter da ;
    DataSet ds;
リスト2 データベース接続オブジェクトはクラスで保持する(C#)


public DbConnection DbConnect () {
    factory =
      DbProviderFactories.GetFactory("Oracle.DataAccess.Client");
    ocsb = factory.CreateConnectionStringBuilder();

    //接続文字列の設定
    ocsb["Data Source"] = "ORCL10GR2";
    ocsb["User ID"]  = "Scott";
    ocsb["Password"] = "Tiger";
    conn = factory.CreateConnection();
    conn.ConnectionString = ocsb.ConnectionString;

    //データベース接続
    conn.Open();
    return conn;
}
リスト3 データベース接続用メソッド(C#)
接続文字列は環境により変えてください。


public DataSet GetData() {
    conn = this.DbConnect();
    cmd = conn.CreateCommand();
    cmd.CommandText = "SELECT * FROM DEPT";
    da = factory.CreateDataAdapter();
    da.SelectCommand = cmd;

    //SELECTの実行
    ds= new DataSet();
    da.Fill(ds);
    return ds;
}
リスト4 SELECT用メソッド(C#)


public void EditDept(Int32 DEPTNO, string DNAME, string LOC) {
    string sql;
    //パラメータは使いまわさないためメソッド内で宣言
    DbParameter prmDEPTNO;
    DbParameter prmDNAME;
    DbParameter prmLOC;

    //パラメータはバインド変数で渡す
    sql = "Update DEPT set "
          + " DNAME = :DNAME,"
          + " LOC = :LOC"
          + " Where DEPTNO = :DEPTNO";

    conn = this.DbConnect();
    cmd = conn.CreateCommand();
    cmd.CommandType = CommandType.Text;
    cmd.CommandText = sql;

    //パラメータ定義
    prmDNAME = cmd.CreateParameter();
    prmDNAME.Value = DNAME;
    cmd.Parameters.Add(prmDNAME);

    prmLOC = cmd.CreateParameter();
    prmLOC.Value = LOC;
    cmd.Parameters.Add(prmLOC);

    prmDEPTNO = cmd.CreateParameter();
    prmDEPTNO.Value = DEPTNO;
    cmd.Parameters.Add(prmDEPTNO);

    //UPDATE実行
    cmd.ExecuteNonQuery();
}
リスト5 UPDATE用メソッド(C#)