ODBC で接続したデータベースのテーブルに対して、レコード件数を取得するメソッドを照会します。 このメソッドは、Where文の指定も可能です。
App.config に ODBC 接続文字列を設定する
<configuration>
<connectionStrings>
<add name="...DB名..."
connectionString="...ODBC 接続文字列..." />
</connectionStrings>
</configuration>
<connectionStrings>
で接続文字列を定義します。
<add>
タグ の name
でDB名を定義し、 connectionString
で接続文字列を定義します。
C# GetODBCRecordCount メソッド
/// <summary>
/// ODBC経由でテーブルレコード件数を取得する
/// </summary>
/// <param name=DBName>ODBC接続文字列DB名称</param>
/// <param name=SqlFrom>テーブル名</param>
/// <param name=SqlWhere>Where文</param>
/// <returns>テーブルレコード件数(異常時:0)</returns>
public static int GetODBCRecordCount(string DBName, string SqlFrom, string SqlWhere)
{
int recordCount = 0;
try
{
//App.config のconnectionStrings から接続文字列を取得する
string cnstr = ConfigurationManager.ConnectionStrings[DBName].ConnectionString;
//ODBCConnection オブジェクトを生成して、オープンする
OdbcConnection cn = new OdbcConnection(cnstr);
cn.Open();
//レコード件数カウントSQLを組み立てる
string sqlstr = ;
sqlstr = sqlstr + "SELECT COUNT(*) AS CNT FROM + SqlFrom";
//引数に Where が設定されていれば、Where文を付与する
if (SqlWhere != )
{
sqlstr = sqlstr + " WHERE " + SqlWhere;
}
// ODBCコマンドをセットする
OdbcCommand oc = new OdbcCommand(sqlstr, cn);
// ODBCクエリを実行する
OdbcDataReader odr = oc.ExecuteReader();
// レコードが読込める間ループする
while (odr.Read() == true)
{
//レコード件数を取得し、Int32型に変換する
recordCount = Convert.ToInt32(odr[CNT]);
}
//クローズする
odr.Close();
cn.Close();
}
catch(Exception ex)
{
throw;
}
return recordCount;
}
引数
- 引数に
DBNmae
,SqlFrom
,SqlWhere
を指定します。 DBName
は、さきほどApp.config
に指定した接続文字列のDBName
を指定します。SqlFrom
にテーブル名を指定します。 SQLのFROM文に相当します。SqlWhere
にWhere条件を指定します。SQLのWhere文に相当します。
件数カウントSQLの組み立て
このメソッドでは、以下のSQL文を組み立てます。
SELECT COUNT(*) AS CNT FROM <SqlFrom:テーブル名> WHERE <SqlWhere:Where文>
接続文字列の取得
string cnstr = ConfigurationManager.ConnectionStrings[DBName].ConnectionString;
ConfigurationManager
クラスを用いて、App.config
に記入した接続文字列を取得します。
DB接続オープン
cn.Open();
OdbcCommand.Connection
メソッドで接続をオープンします。
SQL文のセットと実行
// ODBCコマンドをセットする
OdbcCommand oc = new OdbcCommand(sqlstr, cn);
// ODBCクエリを実行する
OdbcDataReader odr = oc.ExecuteReader();
OdbcCommand に SQL文と接続情報(OdbcConnection)を指定します。
クエリの実行は、OdbcCOmmand.ExecuteReader()メソッドを使用し、OdbcDataReaderクラスにセットします。
レコードを取得する
// レコードが読込める間ループする
while (odr.Read() == true)
{
//レコード件数を取得し、Int32型に変換する
recordCount = Convert.ToInt32(odr[CNT]);
}
レコード件数が終端に達するまでループします。
取得したレコードから レコード件数 CNT
の値を取得します。この項目は Double
型ですので、Int32
型に変換します。
クローズ処理
odr.Close();
cn.Close();
OdbcDataReader
と OdbcConnection
をクローズします。
レコード件数の返却
return recordCount;
最後に、レコード件数を返却して終了します。
おすすめ本 c#コードレシピ集
c#コードレシピ集は、「文字列を大文字あるいは小文字に変換したい」や「Taskをキャンセルしたい」など逆引き的にコードの書き方を調べられるレシピ集です。
2021年8月に発売された本で、全部で385個のレシピが収録されています。
ジャンルは日付処理やLINQ、並列処理と非同期処理など幅広く記載されています。
Kindle対応ですので、まずはサンプルをダウンロードして何が書かれているか確認してはいかがでしょうか。
リンク
コメント