2016-04-12 18 views
1

Bu sorunun birçok kez sorulmuş olduğunu biliyorum ... Ama her zaman JAVA'ya başvurmaktaydı. bu seferİstisna: Uygun bir sürücü bulunamadı jdbc: derby: \ serveraddress db; create = false

  1. Kod derbyNET.dll kullanarak C# inşa (ve .dll derby.dll ve derbytools.dll için .jar derlenen)
  2. olan Java ile yazılmış (ve aynı zamanda derlenmiş aynı kod Javac & & java ...) sadece program çalıştırmadan önce eklediğim zaman düzgün çalışır: set CLASSPATH = C: \ PROGRA ~ 1 \ Java \ JDK18 ~ 1.0_7 \ DB-DER ~ 1.0-B \ lib \ derby jar; C: \ PROGRA ~ 1 \ Java \ JDK18 ~ 1.0_7 DB DER \ ~ 1.0-B \ lib \ derbytools.jar; C# ile yazılmış
  3. kodu belirtilen hata atıyor. Ayrıca bu kodu bu kodu java'dan C# 'ye çevirmeyi denedim ve hata aynıydı.
  4. C# sürücüsü (derby.dll ve derbytools.dll)

görsel stüdyoya bu sürücüyü eklemek nasıl Herhangi bir tavsiye olarak kütüphaneler görmüyorum çünkü konu neden olur eminim? C#

KODU: JAVA

try{ 
    DerbyNET derbyDB = new DerbyNET(@"\\serveraddress\sql\db;  create=false"); 
    if (!derbyDB.openConnection()){ 
     //Error opening Derby DB 
     Console.WriteLine("not connected"); 
     return; 
    } 

    DataTable oDT = derbyDB.getRS("SELECT * FROM admin.user_data") as DataTable; 
    if (oDT.Columns[0].ColumnName == "Erro"){ 
     //Read the ** ERRORS ** section below 
     Thread.Sleep(1000); 
     oDT = derbyDB.getRS("SELECT * FROM FROM admin.user_data") as DataTable; 
    } 
    else if (oDT.Rows.Count == 1 && oDT.Columns.Count == 1){ 
     //Some error occured 
     String strError = derbyDB.getLastError(); 
     return; 
    } 

    foreach (DataRow row in oDT.Rows){ 
     Console.WriteLine("---ROW---"); 
     foreach (var item in row.ItemArray){ 
      Console.Write("Item: "); 
      Console.WriteLine(item); 
     } 
    } 
    derbyDB.closeConnection(); 
} 
catch (Exception ex){ 
    Console.WriteLine(ex.Message); 
} 

KODU: Sorunu anladım

try{ 
    {  
     con = DriverManager.getConnection("jdbc:derby:\\\\serveraddress\\sql\\db;create=false"); 
     Statement sta = con.createStatement(); 
     ResultSet res = sta.executeQuery("SELECT * FROM ADMIN.USER_DATA"); 
     [email protected]("ADMIN.USER_DATA: "); 
     while (res.next()){ 
     [email protected](" " + res.getString("USERID") + ", " + res.getString("PASSWORD") + ", " + res.getString("FIRST_NAME") + ", " + res.getString("LAST_NAME") + 
          ", " + res.getString("EMAIL")); 
    } 
     res.close(); 
     sta.close(); 
     con.close(); 
    } 
} 
catch (System.Exception e){ 
     { 
     java.lang.System.err.println("Exception: " + e.getMessage()); 
     } 
    } 
+0

Eğer biz ** gömülü ** bağlantı dediğimiz (Java açısından) yapmaya çalışıyorsun Yoksa ne (Java açısından) yapmaya çalışıyoruz biz arayacağını: (C#) 'dir Bir ** istemci-sunucu ** bağlantı? Yani, bağlantınızın diğer ucunda bir Derby Ağ Sunucusu var mı? –

+0

Java açısından her şey iyi çalıştı.Veriler db'den çekiliyor .. Sorun C# kodu ile her zaman uygun bir sürücü atar.Ji bakış açısından kod çalıştırmadan önce sınıf yolunu ayarlıyorum (belirtilen iki lib ile) o zaman javac && Jav bir mycode.java - bu çalışıyor. – PawelD

+0

Ve evet, sonunda Apache derby veritabanı :) – PawelD

cevap

2

. 1) iki kütüphane derbytools.jar ve derby.jar ikvmc'den .dll'ye derlenmeli ve referans olarak eklenmelidir. 2) NuGet paketi eklenmelidir "IKVM.OpenJDK.Jdbc ve IKVM.OpenJDK.Core 3) geçerli kod ?

using System; 
using System.Diagnostics; 
using java.sql; 
DriverManager.registerDriver(new org.apache.derby.jdbc.EmbeddedDriver()); 
Connection derbyConn = DriverManager.getConnection("jdbc:derby:\\\\serveraddress\\directory\\sql\\db;create=false"); 
Statement sta = derbyConn.createStatement(); 
ResultSet res = sta.executeQuery("SELECT * FROM tablename"); 
[email protected]("tablename: "); 
      while (res.next()) 
      { 

       [email protected](" " + res.getString("1stColumn") + ", " + res.getString("2ndColumn")); 
      } 
      res.close() 
      sta.close(); 
      derbyConn.close(); 
+0

Mükemmel çözümünüz çalışıyor. Büyük bir teşekkür :-) – Dinesh

İlgili konular