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() メソッドでコミットを実行します。

速攻でメモできる QuickNote リリースしました!

QuickNoteは動作が超軽量でサクサクかけるノートアプリです。一瞬の閃きを逃さずにノートを開き書き始めることができます。 アカウント登録も不要です。お試しあれ!

Excel操作をコマンドで! proBoarderExcel

Excelはマウスで操作するのが基本ですが、マウス操作に疲れてはいませんか? キーボードでExcel操作ができるようになるアプリです。オープンソースで無料です。

積み上げ! Daily Stack リリースしました!

Daily Stack は日々の積み上げを管理するToDoアプリです。過去の積み上げの振り返りだけでなく、ツイート機能もあります。 アカウント登録不要ですぐに使い始めることができます。

ExecNote.app リリースしました!

ExecNoteは、コードが実行できるMarkdownアプリケーションです。Markdownドキュメント内に記載したコードをクリックすると実行ができます。わざわざターミナルを 起動させる必要がありません!無料ですのでもしよければダウンロードをお願いします。

About Me

11年目のシステムエンジニアです。アプリで生活や仕事を改善したい🐱仕事効率化、自動化のアプリ開発が得意です、ご相談ください。 🚀エンタメ系アプリの開発も模索中🐬社内SEや個人アプリ開発者、システムエンジニアになりたい人と繋がりたい🐱