はじめに
この記事はClaris FileMakerでODBCによるデータ操作を検証し、 うまくいかなかったという事を発見した 内容となります。
Claris FileMakerとは
データベース管理とカスタムアプリケーション開発を容易にするための多機能プラットフォームです。
※ AI様より。
環境
- FileMaker Pro 2023
- Windows 11 Pro
- Claris FileMaker 2023 向け xDBC クライアントドライバ
- Visual Studio 2022
- .NET8
- C#
サンプルプログラム
以下のサンプルプログラムでテストしてみました。
// ODBCのデータソース名、ユーザー名、パスワードを設定
string connectionString = "DSN=データソース名;UID=ユーザー名;PWD=パスワード";
// ODBC接続を開く
using (OdbcConnection connection = new OdbcConnection(connectionString))
{
try
{
// 接続開始
connection.Open();
// SQLクエリ
string query = "SELECT * FROM \"テーブル名\"";
// ODBCコマンドの作成
OdbcCommand command = new OdbcCommand(query, connection);
// クエリ実行
using (OdbcDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
// ここで、読み取ったデータを表示
Console.WriteLine(reader[0].ToString()); // ここでエラーになる!
}
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
finally
{
// 接続を閉じる
if (connection.State == System.Data.ConnectionState.Open)
{
// 接続終了
connection.Close();
}
}
}
上記プログラムで 「ここでエラーになる!」 の箇所でExceptionに飛んだ実行結果は下記のものとなります。
実行結果
StackTrace.Messege
Arithmetic operation resulted in an overflow.
Exception.StackTrace
at System.IntPtr.ToInt32()
at System.Data.Odbc.SQLLEN.op_Implicit(SQLLEN value)
at System.Data.Odbc.OdbcDataReader.GetSqlType(Int32 i)
at System.Data.Odbc.OdbcDataReader.GetValue(Int32 i)
at System.Data.Odbc.OdbcDataReader.get_Item(Int32 i)
放置された問題
この問題をネットで調べていると、先人の方が似たような問題に直面している事を発見しました。
11年くらい前から似たような現象があるので.NETで使うのは厳しいのかもしれません。
検証してませんがSelect文は通るのでUpdateやDeleteも成功しそうです。
ただし、Selectの結果が確認できないので、ODBC経由でデータ操作をするのは難しいかもしれません。
FileMaker ODBC Client Driver 64bit版の不具合
There is an error in the syntax of the query
解決策
Claris FileMaker 2023 Data APIというものがあり、RestAPI経由での連携が主流の様です。
※ ODBC接続は非推奨になっているようです。