トップC-Tips > Excelファイルによる簡易データベース(1)

Excelファイルによる簡易データベース(1)[2013.01.08]
C言語プログラムからExcelファイルを簡易なSQLデータベースとして使うことができる。 insertやupdateコマンドも使うことができるが、今回はselectコマンドを使うプログラムを示す。

1.はじめに

簡易データベースとしてはCSVファイルを使う方法があるが、 表が多い場合、ファイル数が多くなり、管理しづらくなる。

そこで、ここでは、Excelファイル形式を使うことにする。

DLLとしては odbc32.dll を使用する。 ヘッダファイルとして、sqlext.h をインクルードする。

2.Excelファイルに接続する

下のプログラム sqltest1.c では、dbOpen関数により、Excelファイルに接続する。 Excelファイルのパス名を引数とする。Microsoft Excel Driverが使われる。

3.Selectコマンドの実行

SelectコマンドはDLL関数SQLExecDirectにより実行する。

列数は分かるが、行数は簡単には得られないため、sqlSelectExec関数では、 上限値を引数として与えている。 最初にこの上限値を要素数とした行ポインタ配列を確保している。 各行は文字列の配列としているが、要素数は列数+1としている。 最後の要素はヌルとしている。 sqlSelectExec関数は二次元データ配列のみを戻り値としているため、 列数を呼び出し側で判断するために、ヌル要素を追加している。

例えば、

char ***sqlSelectExec(char *sql, int maxrow, int *pNumCols)
のようにして、列数を戻すようにすれば、+1は不要となる。
sqltest1.c

上のプログラムの実行結果は次の通りである。

BANK TIME USD EUR AUD NZD GBP CAD CHF HKD
   1: citi 2013-01-09 13:56:00 87.4 114.3 91.7 73.2 140.3 88.55 94.55 11.29
   2: sony 2013-01-09 14:05:00 87.44 114.35 91.87 73.32 140.35 88.56 94.57 11.27