【发布时间】:2016-04-12 17:18:51
【问题描述】:
我知道这个问题已经被问过很多次了......但它总是指的是 JAVA。不是这次
- 使用 derbyNET.dll 在 C# 中构建代码(并从 .jar 编译到 .dll derby.dll 和 derbytools.dll)
- 用 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\Java\JDK18~1.0_7\DB-DER~1.0- B\lib\derbytools.jar;
- 用 C# 编写的代码会引发上述错误。我也尝试过改造 这段代码从 java 到 c# 和错误是一样的。
- 我很确定这个问题是因为 C# 看不到 库作为驱动程序(derby.dll 和 derbytools.dll)
任何建议如何将此驱动程序添加到视觉工作室?
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());
}
}
【问题讨论】:
-
您是否尝试建立(用 Java 术语)我们称之为 嵌入式 的连接?或者您是否试图建立(用Java 术语)我们称之为client-server 的连接?也就是说,您连接的另一端是否有 Derby 网络服务器?
-
用 Java 术语来说,我一切正常。正在从 db 中提取数据。问题在于 C# 代码,总是抛出不合适的驱动程序。在运行代码之前,从 Java 角度来看,我正在设置类路径(带有两个提到的库),然后是 javac && Java mycode.java - 这是有效的。
-
是的,最后是 Apache derby 数据库 :)
标签: c# .net database jdbc derby