2016-04-12 14 views
1

Günaydın, Benim vertx uygulaması ile odbc kullanarak Sql veritabanına bağlanmak istiyorum ama kodumu çalıştırdığımda garip bir hata görüntülenir: java .sql.SQLSyntaxErrorException: kullanıcı ayrıcalığı yoksun veya nesne bulunamadı: ACHATVertx: java.sql.SQLSyntaxErrorException: kullanıcı ayrıcalık veya nesne bulunamadı: ACHAT

ben silmeye çalıştı kapatma ama aynı hatayı İşte

susturur benim kodudur:

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()); 
    }); 

ve sunucusu için :

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

cevap

0

Java uygulamalarından HSQLDB'ye bağlantı, ODBC değil, JDBC yoluyla yapılır. Bağlantı ayarlarınız JDBC'yi kullanıyor. Bunu erişebilmek için önce

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

şema DBO ve masa ACHAT oluşturulması gerekir:

aşağıda çizgi başlattığınızda boş bir bellek içi veritabanına bir bağlantı oluşturur.

+0

Cevabınız için çok teşekkür ederim, ama yine de biraz belirsiz, sadece benim veritabanı adımı kullanarak sorunu çözmemelidir. Ve benim Achat tablosum için, Vertx'in onu bağlantıdan okuyabileceğini varsayalım. (Bunu zaten sql veritabanımda oluşturdum). Saygılar. – zackzulg

+0

Gerçek veritabanı adını ve bağlantı türünü öğrenin ve bağlantı için bu bilgileri kullanın. – fredt

+0

Ben yapılandırmayı değiştirdiğinizde bana hata veriyor: .put ("url", "jdbc: hsqldb: url: // localhost; ONP; user = sa; parola = sa;") 2016-04-12T13 : 14: 22.391 + 0100 SEVERE veritabanını yeniden açamadı org.hsqldb.HsqlException: Veritabanı kilidi edinme hatası: lockFile: [email protected] [file = null, exists = false, locked = false, valid = false ,] yöntemi: setPath nedeni: java.io.IOException: La sözdizimi du nom de fichier, de répertoire ou de birim değeri – zackzulg

İlgili konular