Java - 将查询写入数据库

时间:2013-11-19 16:12:38

标签: java sql hsqldb

我正在尝试编写代码来访问我服务器上的已知数据库以从某个表中收集数据,但我不断收到异常。

到目前为止,这是我的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)

目前我想要做的就是连接到数据库并调用一个查询,但它不会发生在我身上。有没有任何信息可以帮助我?

2 个答案:

答案 0 :(得分:3)

我认为错误消息可能会产生误导。尝试更新版本的hsqldb(或切换到the H2 database以查看错误消息应该是什么样的。)

在你的情况下,我的猜测是表DEVICE不存在。您是否在此数据库中创建了任何表?

另请注意,如果您在网址中输入拼写错误,hsqldb将创建一个空数据库。

由于sa是数据库管理员,“用户缺少权限”的可能性很小。

检查哪些表存在:How to see all the tables in an HSQLDB database?

答案 1 :(得分:0)

您是否在执行代码之前在DB中创建了任何表?如果你有设备,则有可能缺少 / 尝试这样

 String url = "jdbc:hsqldb:C://workspace/database/eemdb";