我使用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 代码读取数据,但出现异常 - 用户缺乏权限或未找到对象错误
- 类似问题 - https://sourceforge.net/p/hsqldb/mailman/message/28944633/
- 尝试在连接数据库时以及在代码中提供大写“SA”
- 由于 hsql 区分大小写,请尝试像这样的查询: 从域中选择 ID 或者 从“域”中选择 ID
- 转到此路径 -C:\hsqldb-2.4.1\hsqldb\data 检查您是否没有这些文件的多个副本: 工作区中的 mydb.log、mydb.lck、mydb.properties 等
- 在单引号中尝试了此查询 “从域中选择 ID”
- 此链接还有另一种解决方案 - HSQLDB user lacks privilege or object not found error when making select statements with where
您可以尝试使用唯一名称而不是域创建不同的表
结果集 rs=stmt.executequery("从 testdemo 中选择 *");
此行抛出异常,表示 -用户缺乏权限或未找到对象错误
实际结果:
user lacks privilege or object not found error
预期结果:它应该从表中读取数据
最佳答案
使用 HSQLDB 时最常见的问题之一是连接字符串中缺少/错误的数据库别名。当您使用以下命令启动 HSQLDB 服务器时,
@java -classpath ../lib/hsqldb.jar org.hsqldb.server.Server --database.0 file:sampledb --db
所需的连接 URL 为 jdbc:hsqldb:hsql://localhost/sdb。确保您的新表位于 PUBLIC 模式中,因为默认情况下驱动程序将在其中查找该表。根据您的描述,如果您能够使用 UI 工具查询表,那么这很可能是您的连接字符串问题。
如果您使用文件存储运行模式,您可以从安装中进行连接,例如C:\servers\DB\hsqldb240\bin\runManagerSwing.bat(swing UI 管理器)使用 jdbc:hsqldb:file:testdb;ifexists=true;但要使用 java 连接,您应该在连接字符串中指定 filedb 位置,例如 jdbc:hsqldb:file:C:\servers\DB\hsqldb240\testdb;ifexists=true;
关于java - 使用 java 在 HSQL 数据库中出现异常 - 用户缺乏权限或未找到对象错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56225138/