繁体   English   中英

例外:找不到适用于jdbc:derby:\\\\ serveraddress \\ db; create = false的驱动程序

[英]Exception: No suitable driver found for jdbc:derby:\\serveraddress\db;create=false

我知道这个问题已经被问过很多次了……但是它总是指的是JAVA。 这次不行

  1. 代码是使用derbyNET.dll在C#中构建的(并从.jar编译为.dll derby.dll和derbytools.dll)
  2. 仅当我在程序运行前添加时,才可以用Java编写的相同代码(也可以使用javac && java ...在JAVA中进行编译)正常运行:set CLASSPATH = C:\\ PROGRA〜1 \\ Java \\ JDK18〜1.0_7 \\ DB-DER 〜1.0-B \\ lib中\\的derby.jar; C:\\ PROGRA〜1 \\爪哇\\ 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#中的代码:

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

JAVA中的代码:

try{  
     {    
        con = DriverManager.getConnection("jdbc:derby:\\\\serveraddress\\sql\\db;create=false");
       Statement sta = con.createStatement();
       ResultSet res = sta.executeQuery("SELECT * FROM ADMIN.USER_DATA");
       java.lang.System.@out.println("ADMIN.USER_DATA: ");
      while (res.next()){
         java.lang.System.@out.println("  " + 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());
      }
  }

我已经解决了这个问题。 1)必须通过ikvmc将两个库derbytools.jar和derby.jar编译为.dll并添加为参考2)需要添加NuGet包“ IKVM.OpenJDK.Jdbc和IKVM.OpenJDK.Core 3)当前代码为(C# ):

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");
java.lang.System.@out.println("tablename: ");
            while (res.next())
            {

                java.lang.System.@out.println("  " + res.getString("1stColumn") + ", " + res.getString("2ndColumn"));
            }
            res.close()
            sta.close();
            derbyConn.close();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM