[C#]ODBC 接続したテーブルのレコード件数を取得する

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();

OdbcDataReaderOdbcConnection をクローズします。

レコード件数の返却

return recordCount;

最後に、レコード件数を返却して終了します。

返信を残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です