【发布时间】:2013-03-03 09:37:04
【问题描述】:
我正在尝试加载 JDBC 驱动程序以对我的 AS400 进行一些 SQL 调用。我尝试在安装了 JDBC 的计算机上运行连接,并且 URL 和 SQL 调用工作正常。
我需要开发一个没有安装驱动程序的应用程序(目前适用于 Android,但我们希望扩展到桌面应用程序)。我正在实际的 android 设备上测试代码,而不是模拟器,因此它具有完整的互联网权限。
jt400 的驱动程序位于 com.ibm.as400.access.AS400JDBCDriver 中,名称为 noted by IBM。
这是我的代码:
try {
Class.forName("com.ibm.as400.access.AS400JDBCDriver").newInstance();
Connection conn = DriverManager.getConnection(
url + schema + ";naming=sql;errors=full",
uname,
psswrd);
// do SQL query stuff
rs.close();
stmt.close();
conn.close();
}
catch (ClassNotFoundException e)
{
this.basicOutput.setText("Class not found: " + e.getMessage());
System.out.println(e.getStackTrace());
}
//catch (SQLException e)
catch (Exception e) //need generic to catch all errors thrown
{
this.basicOutput.setText(e.getMessage());
System.out.println(e.getStackTrace());
}
当我运行它时,我得到一个“找不到类:com.ibm.as400.access.AS400JDBCDriver”。
我进行了一些研究,结果表明 Class.forName 不是一个好方法。所以我也尝试了这个:
DriverManager.registerDriver(new com.ibm.as400.access.AS400JDBCDriver());
但这也会产生同样的错误。
课程在那里。编译后的代码不会抛出任何语法错误,但由于某种原因,运行时找不到它。
我错过了什么?
【问题讨论】:
-
JDBC 不是已安装的。 jdbc Driver 是一个与数据库交互的类。运行应用程序时,您需要在类路径中包含该类(通常在 .jar 文件中)。
-
我明白了。有没有办法包含它或从包含在项目中而不是类路径中的 .jar 加载它?
-
您在项目的 libs 文件夹下包含
jar,然后将该 libs 文件夹添加到构建路径。按照此处的步骤操作:stackoverflow.com/questions/1334802/… -
我一遍又一遍:
-
删除
Class.forName(),而你正在处理它。自 2007 年以来就不再需要它了。
标签: java android jdbc ibm-midrange