获取异常-使用Java

时间:2019-05-20 16:48:45

标签: java database hsqldb

我已经使用hsql创建了数据库,还使用了java和hsql中的swingmanager的UI界面添加了一张表。

第1点:

我使用以下详细信息创建了数据库

Type : HSQL Database Engine Standalone
Driver: org.hsqldb.jdbcDriver
URL: jdbc:hsqldb:file:mydb
UserName: SA
Password: SA

第2点: 从hsql的UI插入了一些数据。

第3点:hsql连接正常

第4点:尝试使用Java代码读取数据,但出现异常提示- 用户缺少特权或找不到对象错误

  1. 类似问题-https://sourceforge.net/p/hsqldb/mailman/message/28944633/
  2. 试图在连接数据库时以及在代码中提供大写字母“ SA”
  3. 由于hsql区分大小写,请尝试查询类似- 从域中选择ID 要么 从“域”中选择ID
  4. 转到此路径-C:\ hsqldb-2.4.1 \ hsqldb \ data 检查您是否没有这些文件的多个副本: 您的工作区中的mydb.log,mydb.lck,mydb.properties等
  5. 尝试使用单引号将该查询 “从域中选择ID”
  6. 此链接还有另一个解决方案- HSQLDB user lacks privilege or object not found error when making select statements with where
  7. 您可以尝试创建具有唯一名称而不是域的其他表

    结果集rs = stmt.executequery(“从testdemo中选择*”);

此行引发异常,表明-用户缺少特权或找不到对象错误

实际结果:

  

用户缺少特权或找不到对象错误

预期结果:应该从表中读取数据

1 个答案:

答案 0 :(得分:0)

与HSQLDB一起使用的最常见问题之一是连接字符串中缺少/错误的数据库别名。当您使用以下命令启动HSQLDB服务器时,

@java -classpath ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:sampledb --db

所需的连接URL为jdbc:hsqldb:hsql:// localhost / sdb 。默认情况下,确保新表位于PUBLIC模式的coz中,驱动程序将在该表中查找该表。据您所知,如果您能够使用UI工具查询表,则很可能是您的连接字符串问题。

如果您使用文件存储运行模式,则可以从安装内进行连接,例如C:\ servers \ DB \ hsqldb240 \ bin \ runManagerSwing.bat(通过回转UI管理器),使用jdbc:hsqldb:file:testdb; ifexists = true;但是要使用Java进行连接,您应该在连接字符串中指定filedb的位置,例如jdbc:hsqldb:file:C:\ servers \ DB \ hsqldb240 \ testdb; ifexists = true;