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;

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

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

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

Excel操作をコマンドで! proBoarderExcel

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

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

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

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

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

About Me

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