Vertx:java.sql.SQLSyntaxErrorException:user缺少未找到的权限或对象:ACHAT

时间:2016-04-12 09:37:50

标签: java hsqldb vert.x

早上好, 我想通过使用odbc将我的vertx应用程序与Sql数据库连接,但是当我运行我的代码时出现一个奇怪的错误:java.sql.SQLSyntaxErrorException:user缺少权限或找不到对象:ACHAT

我试图删除?关机但它仍然存在相同的错误

这是我的代码:

 public void start(Future<Void> startFuture){
    String file="/Test1";
    Router router = Router.router(vertx);
       router.route(file).handler(routingContext -> {
        HttpServerResponse response = routingContext.response();
        response.setChunked(true);            
        JsonObject config = new JsonObject()
                  .put("url", "jdbc:hsqldb:mem:odbcName?shutdown=true")   
                  .put("user", "sa")
                  .put("password", "****")
                  .put("driver_class", "org.hsqldb.jdbcDriver")
                  .put("max_pool_size", 30);
        JDBCClient client = JDBCClient.createShared(vertx, config);

        client.getConnection(res -> {
                  if (res.succeeded()) {
                    SQLConnection connection = res.result();
                    connection.query("select id from dbo.achat", res2 -> {
                      if (res2.succeeded()) {
                          System.out.println("oki");
                      }
                      else { System.out.println(res2.cause().toString()); }
                    });
                  } else {
                    System.out.println("Cnx failed !!");
                  }
                });
        routingContext.vertx().setTimer(8000, tid ->  routingContext.response().end());
    });

对于我的服务器:

     vertx.createHttpServer()
            .requestHandler(router::accept)
            .listen(8085, "localhost", res -> {                    
                if (res.succeeded()){
                    startFuture.complete();    
                }
                else
                    startFuture.fail(res.cause());
            });

1 个答案:

答案 0 :(得分:0)

从Java应用程序连接到HSQLDB是通过JDBC而不是ODBC。您的连接设置使用JDBC。

以下行创建了与内存数据库的连接,当您启动时该数据库为空:

 put("url", "jdbc:hsqldb:mem:odbcName?shutdown=true")   

必须先创建架构DBO和表ACHAT,然后才能访问它。