请高手帮忙解决:连续执行JDBC更新语句时遇到的一个奇怪问题!
我执行了下面程序段:
DriverManager.registerDriver(new org.firebirdsql.jdbc.FBDriver());
String url = "jdbc:firebirdsql:dbserver/3050:/home/huyuka/db.gdb";
String username = "sysdba";
String password = "masterkey";
Connection c;
Statement s;
String[] sql = {
"create table T(id int not null primary key);" ,
"create table T1(id int,foreign key (id) references T(id));"
};
for (int i = 0; i < sql.length; i++) {
try {
c = DriverManager.getConnection(url, username, password);
c.setAutoCommit(false);
s = c.createStatement();
System.out.print(sql[i] + "\n");
s.executeUpdate(sql[i]);
c.commit();
s.close();
c.close();
Thread.currentThread().sleep(2000);
}
catch (SQLException e) {
e.printStackTrace(System.err);
}
}
执行时,成功的创建了表T,但创建表T1时,系统抛出了异常,说表T正在被使用,因此不能创建表T1。
哪位高手请帮我分析一下错误在哪?
问题点数:0、回复次数:3Top
1 楼leon2k(LEON)回复于 2003-09-02 14:14:29 得分 0
不知道,帮你UPTop
2 楼huyuka(古禾)回复于 2003-09-02 17:57:34 得分 0
不好意思,我找到原因了:在运行这段代码的同时,另一个程序SQuirreL SQL Client也连接到了同一个数据库。将SQuirreL SQL Client对这个数据库的连接关掉以后,这段代码就可以顺利运行了。不过我还是有一点搞不清楚,为什么SQuirreL SQL Client的连接会干扰我建的连接咧?Top
3 楼CuteBit(康)回复于 2003-09-02 20:27:28 得分 0
hi,huyuka
"正在被使用"是 fb 经典的“出错”提示,在早期 fb1.5(RC1,2) 修改元数据是最经常出现这个错误。很多时候是软件内部的逻辑判断问题。
你使用后来版本情况会好些。Top




