我正在 Netbeans 7.2.1 上构建一个带有嵌入式数据库的 Java 应用程序。现在,我可以通过以下代码与 derby 数据库建立连接:
Connection con = DriverManager.getConnection(
"jdbc:derby:database;create=true",
uName,
uPass);
但是,我无法对数据库的表执行查询。经过一番研究,我尝试执行以下代码,但没有成功:
Statement stmt = con.createStatement();
ResultSet rs;
rs = stmt.executeQuery("SELECT descricao FROM fichas");
while (rs.next()) {
String s = rs.getString("descricao");
System.out.println(s);
}
我这里有两个问题。首先,根据我所做的搜索,我应该使用上面示例中的 Statement stmt,但 netbeans 给了我一个错误。为了能够执行跟随他的方法“stmt.executeQuery()”,我必须将语句定义为:
java.sql.Statement stmt = con.createStatement();
如果我不这样使用它,我就无法选择“executeQuery”方法。其次,即使使用它,查询也不会被执行。我在控制台上收到错误:
java.sql.SQLSyntaxErrorException:架构“ADMIN_DATABASE”不存在
任何提示我如何解决这个问题?谢谢!
新更新:
我正在运行一些测试,这里有一些新的结论。如果不是通过 netbeans 的服务面板创建表,我运行代码:
stmt.execute("create table test_table (name varchar(128))");
有用。该表已创建,如果我再试一次,它会给出该表已经存在的预期错误。但是,我查看了服务面板,在应用程序嵌入的 derby 数据库中,这个“测试表”与其他“测试表”并没有在一起。
除此之外,如果我在该表上执行选择,它不会给出模式错误,但在我在服务面板上手动创建的其他表中,它会继续给出错误。
那么,谁能解释一下有什么区别?test_table
我创建的去哪里了?这种创建模式与在 derby 上创建表的模式有什么区别?为什么我会收到一个架构错误而不是其他架构错误?
对不起这么多问题,但现在我很困惑。谢谢!