2016-04-12 13 views
1

この質問は何度も尋ねられていますが、常にJAVAを参照していました。ない今回例外:jdbc:derby:\ serveraddress db;に適切なドライバが見つかりません。create = false

  1. コードderbyNET.dllを使用してC#で構築された(及び の.dll derby.dllとderbytools.dllに.jarファイルからコンパイルされた)
  2. れるJavaで書かれた(また同じでコンパイルコードJavaを使用するJava & & java ...)は、プログラムが実行される前に追加する場合にのみ正しく動作します。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;
  3. C#で書かれたコードは上記のエラーをスローします。私も このコードをJavaからC#に変換しようとしましたが、エラーは同じでした。
  4. 私はC#はドライバー(derby.dllとderbytools.dll)として のライブラリが表示されていないので、その問題が発生しているかなり確信して

のVisual Studioには、このドライバを追加する方法の任意のアドバイスはありますか? C#で

CODE: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); 
} 

CODE:私はこの問題を考え出した

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

私は**埋め込み**接続と呼んでいるものを作ろうとしているのですか(Javaの用語で)私たちが呼び出すものを作ろうとしていますか? **クライアント/サーバー**の接続?接続の相手側にDerby Network Serverがありますか? –

+0

Javaの言葉では、すべてうまくいきました。データがdbから取得されています。私はコードを実行する前に、私はクラスパス(2つの上記のlibs)を設定していますjavac && Jav mycode.java - これは動作しています。 – PawelD

+0

はい、最後にApache Derbyデータベースです。 – PawelD

答えて

2

。 1)2つのライブラリderbytools.jarとderby.jarをikvmc経由で.dllにコンパイルし、参照として追加する必要があります。 2)NuGetパッケージ "IKVM.OpenJDK.JdbcとIKVM.OpenJDK.Coreを追加する必要があります。 3)現在のコード

+0

あなたのソリューションは完璧です。大きな感謝:-) – Dinesh

関連する問題