[C#]ODBCでデータベースに接続してテーブルを更新する

ODBCで接続したデータベースに対して、INSERT・UPDATE・DELETEなど、テーブルを更新する方法を紹介します。

App.config に ODBC 接続文字列を設定する

<configuration>

  <connectionStrings>
    <add name="...DB名..."
         connectionString="...ODBC 接続文字列..."/>
  </connectionStrings>

</configuration>

<connectionStrings> で接続文字列を定義します。

<add> タグ の name でDB名を定義し、 connectionString で接続文字列を定義します。

C# UpdateODBCDatabase メソッド

/// <summary>
/// ODBCデータベースのレコードを更新します。
/// </summary>
/// <param name="DBName">ODBC接続文字列DB名称</param>
/// <param name="sqlList">SQL文リスト(INSERT/UPDATE/DELETE)</param>
/// <returns>リターンコード(0:正常、9:異常)</returns>
public static int UpdateODBCDatabase(string DBName, List<string> sqlList)
{
    //App.config のconnectionStrings から接続文字列を取得する
    string cnstr = ConfigurationManager.ConnectionStrings[DBName].ConnectionString;

    // OdbcConnection クラスを使用
    using (OdbcConnection cn = new OdbcConnection(cnstr))
    {
        OdbcCommand command = new OdbcCommand();
        OdbcTransaction trans = null;

        command.Connection = cn;

        try
        {
            //DB接続オープン
            cn.Open();

            //トランザクションを開始
            trans = cn.BeginTransaction();

            //接続とトランザクション情報をセット
            command.Connection = cn;
            command.Transaction = trans;

            //List<String>型に格納しているSQLを foreach でループ
            sqlList.ForEach(delegate(String sqlstr)
            {
                //SQLを設定し、クエリを実行
                command.CommandText = sqlstr;
                command.ExecuteNonQuery();
            });

            //トランザクションをコミット
            trans.Commit();

        }
        catch(Exception ex)
        {
            //エラーが発生した場合はロールバック
            trans.Rollback();
            return 9;
        }

    }

    return 0;

}

引数

  • 引数に DBNamesqlList を指定します。

  • DBName は、さきほど App.config に指定した接続文字列の DBName を指定します。

  • sqlList は、List<string>型の変数で、INSERT文やUPDATE文などのSQLを指定します。

接続文字列の取得

string cnstr = ConfigurationManager.ConnectionStrings[DBName].ConnectionString;

ConfigurationManager クラスを用いて、App.config に記入した接続文字列を取得します。

DB接続オープン

cn.Open();

OdbcCommand.Connection メソッドで接続をオープンします。

トランザクションを開始

trans = cn.BeginTransaction();

OdbcCommand.Connection.BeginTransaction() メソッドで、トランザクションを開始します。

SQL を実行

//List<String>型に格納しているSQLを foreach でループ
sqlList.ForEach(delegate(String sqlstr)
{
    //SQLを設定し、クエリを実行
    command.CommandText = sqlstr;
    command.ExecuteNonQuery();
});

List<string> 型の変数 sqlListForEachメソッドで1行ずつ取得します。

その後、OdbcCommand.CommandText にSQL文をセットします。

OdbcCommand.ExecuteNonQuery メソッドでSQL文を実行します。

トランザクションをコミット

trans.Commit();

OdbcTransaction.Commit() メソッドでコミットを実行します。

返信を残す

メールアドレスが公開されることはありません。