我正在尝试编写代码来访问服务器上的已知数据库,以从某个表收集数据,但我不断收到异常。
这是到目前为止我的 Java 代码;
public static void main (String [] args) throws FileNotFoundException
{
String url = "jdbc:hsqldb:C:/workspace/database/eemdb";
String dbName = "eem_db";
String driver = "org.hsqldb.jdbcDriver";
String username = "sa";
String password = "";
try
{
Class.forName(driver).newInstance();
Connection con = DriverManager.getConnection(url+dbName, username, password);
Statement st = con.createStatement();
ResultSet res = st.executeQuery("SELECT * FROM DEVICE");
con.close();
}
catch (Exception e)
{
e.printStackTrace();
}
}
这是异常报告;
java.sql.SQLSyntaxErrorException: user lacks privilege or object not found: DEVICE
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCUtil.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.fetchResult(Unknown Source)
at org.hsqldb.jdbc.JDBCStatement.executeQuery(Unknown Source)
at com.davranetworks.seleniumtests.Example.main(Example.java:32)
Caused by: org.hsqldb.HsqlException: user lacks privilege or object not found: DEVICE
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.SchemaManager.getTable(Unknown Source)
at org.hsqldb.ParserDQL.readTableName(Unknown Source)
at org.hsqldb.ParserDQL.readTableOrSubquery(Unknown Source)
at org.hsqldb.ParserDQL.XreadTableReference(Unknown Source)
at org.hsqldb.ParserDQL.XreadFromClause(Unknown Source)
at org.hsqldb.ParserDQL.XreadTableExpression(Unknown Source)
at org.hsqldb.ParserDQL.XreadQuerySpecification(Unknown Source)
at org.hsqldb.ParserDQL.XreadSimpleTable(Unknown Source)
目前我想做的就是连接到数据库并调用查询,但这对我来说并没有发生。有谁有任何信息可以帮助我吗?
最佳答案
我认为该错误消息可能具有误导性。尝试更新版本的 hsqldb(或切换到 the H2 database 以查看错误消息应该是什么样的)。
就您而言,我的猜测是表DEVICE
不存在。您是否在此数据库中创建了任何表?
另请注意,如果您在 URL 中输入错误,hsqldb 将创建一个空数据库。
“用户缺乏权限”的可能性很小,因为 sa
是数据库管理员。
关于Java - 向数据库写入查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20076503/