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;
}
引数
- 引数に
DBName
とsqlList
を指定します。 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>
型の変数 sqlList
を ForEach
メソッドで1行ずつ取得します。
その後、OdbcCommand.CommandText
にSQL文をセットします。
OdbcCommand.ExecuteNonQuery
メソッドでSQL文を実行します。
トランザクションをコミット
trans.Commit();
OdbcTransaction.Commit()
メソッドでコミットを実行します。
おすすめ本 c#コードレシピ集
c#コードレシピ集は、「文字列を大文字あるいは小文字に変換したい」や「Taskをキャンセルしたい」など逆引き的にコードの書き方を調べられるレシピ集です。
2021年8月に発売された本で、全部で385個のレシピが収録されています。
ジャンルは日付処理やLINQ、並列処理と非同期処理など幅広く記載されています。
Kindle対応ですので、まずはサンプルをダウンロードして何が書かれているか確認してはいかがでしょうか。
リンク
コメント