首先对不起我的英语。我有问题需要帮助。我有一个自己在 c# 上制作的简单工具。此工具可连接到本地或远程 firebird 服务器 (v.2.5)。我的工具可以在服务器的某处创建指定的 .fdb 文件(数据库)。
我还有一个包含 SQL 语句的文件(创建表、触发器等)。我想在创建数据库后执行这个文件。执行此文件将填充用户数据库的结构 - 不是数据,只有结构。
但后来我尝试执行我的 SQL 脚本 - firebird 服务器返回一个
SQL 错误代码 = -104 令牌未知行 xxx 列 xxx。
这是这条CREATE TABLESQL 语句中的一行,例如:
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)
); 
如果我只在我的文件中留下一个创建语句 - 一切都会好的......我不知道我是如何解释的(是否清楚) - 换句话说 - 为什么我不能使用许多创建语句执行完整查询在一笔交易中?有我执行查询的主要方法:
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文件。