简体   繁体   English

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

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

I know that this question has been asked many times... BUT it was always referring to JAVA. 我知道这个问题已经被问过很多次了……但是它总是指的是JAVA。 not this time 这次不行

  1. Code is built in C# using derbyNET.dll (and compiled from .jar to .dll derby.dll and derbytools.dll) 代码是使用derbyNET.dll在C#中构建的(并从.jar编译为.dll derby.dll和derbytools.dll)
  2. The same code written in Java (and also compiled in JAVA using javac && java...) works properly only if i add before program runs: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; 仅当我在程序运行前添加时,才可以用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. code written in C# throws mentioned error. 用C#编写的代码抛出上述错误。 I tried also transform this code from java to c# and error was the same. 我试过也将此代码从java转换为c#,错误是相同的。
  4. I am pretty sure that issue is caused because C# do not see the libraries as driver (derby.dll and derbytools.dll) 我很确定是由于C#不会将库视为驱动程序(derby.dll和derbytools.dll)引起的。

Any advice how add this driver to visual studio? 任何建议如何将此驱动程序添加到Visual Studio?

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

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

I have figured out the issue. 我已经解决了这个问题。 1) two libraries derbytools.jar and derby.jar have to be compiled via ikvmc to .dll and add as reference 2) need to add NuGet package "IKVM.OpenJDK.Jdbc and IKVM.OpenJDK.Core 3) current code is (C#): 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