首先对不起我的英语。我有问题需要帮助。我有一个自己在 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)
);
如果我只在我的文件中留下一个创建语句 - 一切都会好的......我不知道我是如何解释的(是否清楚) - 换句话说 - 为什么我不能使用许多创建语句执行完整查询在一笔交易中?有我执行查询的主要方法:
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文件。