まずは英語でごめんなさい。問題があり、助けが必要です。私はc#で自分で作った簡単なツールを持っています。このツールは、ローカルまたはリモートのfirebirdサーバー(v.2.5)に接続します。そして、私のツールは、サーバー上のどこかに指定された.fdbファイル(データベース)を作成できます。
また、SQLステートメント(テーブルの作成、トリガーなど)を含むファイルがあります。データベース作成後にこのファイルを実行したい。このファイルを実行すると、ユーザーデータベースの構造がいっぱいになります。データではなく、構造だけです。
しかし、それから私は自分のSQLスクリプトを実行しようとします-firebirdサーバーは
SQLエラーコード=-104トークン不明の行xxx列xxx。
これがこのCREATE TABLE
SQLステートメントの行です。例:
CREATE TABLE tb1
(
col1 INTEGER NOT NULL,
col2 VARCHAR(36)
);
/* This next create statement causes an error */
CREATE TABLE tb2
(
col1 INTEGER NOT NULL,
col2 VARCHAR(36)
);
ファイルにcreateステートメントを1つだけ残すと、すべてがうまくいきます...どのように説明したかわかりません(明確かどうかはわかりません))-別の言葉-多くのcreateステートメントで完全なクエリを実行できないのはなぜですか1つのトランザクションで?クエリを実行する私のメインメソッドがあります:
public static string Do(string conString, string query)
{
using (FbConnection conn = new FbConnection())
{
try
{
conn.ConnectionString = conString;
conn.Open();
FbTransaction trans = conn.BeginTransaction();
FbCommand cmd = new FbCommand(query, conn, trans);
cmd.ExecuteNonQuery();
trans.Commit();
}
catch (Exception ex)
{
System.Windows.MessageBox.Show(ex.ToString());
return "Transaction Fail";
}
}
return "Transaction Commited";
}
私のSQLファイルというクエリがあります。