当前位置: 首页 > 知识库问答 >
问题:

通过jdbc连接到eclipse中的DB2数据库

钦侯林
2023-03-14

我正在尝试通过JDBC连接到使用Eclipse(版本Juno)的IBMDB2数据库。我已经将驱动程序(外部jar文件)添加到我的项目中,并且驱动程序已正确加载…

public static void main(String[] args) throws SQLException, ClassNotFoundException {
    Class.forName("com.ibm.db2.jcc.DB2Driver");
    System.out.println("Driver loaded");

    Connection dbConn = DriverManager.getConnection("jdbc:db2://***.**.***.*:50000/BWUEBDB", "username", "password");
    System.out.println("Connected");
}

我还知道连接数据(数据库路径、用户名、密码)是正确的。但我得到一个java.lang.NoClassDefFoundError:

Exception in thread "main" java.lang.NoClassDefFoundError: sun/io/UnknownCharacterException
    at com.ibm.db2.jcc.b.a.<init>(a.java:238)
    at com.ibm.db2.jcc.b.b.a(b.java:1624)
    at com.ibm.db2.jcc.c.p.a(p.java:350)
    at com.ibm.db2.jcc.c.p.<init>(p.java:404)
    at com.ibm.db2.jcc.b.b.<init>(b.java:256)
    at com.ibm.db2.jcc.DB2Driver.connect(DB2Driver.java:163)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at java.sql.DriverManager.getConnection(Unknown Source)
    at AppTest.main(AppTest.java:17)
Caused by: java.lang.ClassNotFoundException: sun.io.UnknownCharacterException
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.net.URLClassLoader$1.run(Unknown Source)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 9 more

项目属性肯定有问题但是我真的不知道去哪里找。

共有3个答案

罗飞宇
2023-03-14

尝试使用来自驱动程序的直接连接,具有相同的类路径和用户。通过这种方式,您可以确保您的环境已正确配置,并且问题来自 Java。

http://pic.dhe.ibm.com/infocenter/db2luw/v10r5/topic/com.ibm.db2.luw.apdv.java.doc/src/tpc/imjcc_rjv00004.html

java com.ibm.db2.jcc.DB2Jcc -url jdbc:db2://mysys.myloc.svl.ibm.com:446/MYDB -user db2user -password db2pass -tracin

您甚至可以在Eclipse中配置这一行,方法是在“Run ...”中传递参数。对话框,并使用与运行应用程序相同的类路径。

常元章
2023-03-14

您使用什么版本的驱动程序?我在Java 1.8和驱动程序版本2(名为db2jcc.jar)中遇到了同样的问题。使用驱动程序版本4(名为db2jcc4.jar),它可以完美地工作。使用例如tomcat时,请确保lib目录中只有正确的驱动程序是持久的。如果两个驱动程序都是持久的,它将严格使用旧的驱动程序(版本2)。

童华池
2023-03-14

我得到了同样的错误。我用java 8运行它,我切换到Java7,它工作。

 类似资料:
  • 连接失败,出现此异常。我无法追踪到底发生了什么? 另外,getconnection之后的db2diag.log是:

  • 我们有来自IBM(P8)的AS/400机器,它使用DB2数据库。我想通过JDBC连接从DB2读取表并对其进行处理。连接到DB2数据库并用java程序生成sql语句是可能的?如果是的话,有人能出示一点样本吗。提前道谢。

  • 我正在尝试连接到本地DB210.5Express-C服务器。这是一个测试环境,所以我不关心安全性。 我能够连接到命令行处理器(在Windows上运行),并更改了和的配置设置。当时我希望能够在没有身份验证的情况下进行连接(我重新启动了DB2服务),但仍然出现了一个错误。 当我尝试在没有用户名/密码的情况下连接时 我得到了错误:com.ibm.db2.jcc.am.SqlSynTaxErrorExce

  • 创建数据库后,必须连接或启动数据库才能正常使用。 语法: 示例: 假设要连接 数据库,参考以下代码: 执行上面命令,得到以下结果:

  • 我在控制台中不断得到关于时区的相同错误,但我从未尝试在代码中设置时区。 控制台中的错误消息: 连接失败!检查输出consolejava.sql.sqlexception:服务器时区值“pdt”无法识别或表示多个时区。如果要利用时区支持,则必须配置服务器或JDBC驱动程序(通过serverTimezone配置属性)以使用更指定的时区值。

  • 问题内容: 我正在尝试通过网络连接到MySQL数据库。我已经安装了MySQL,并且该服务在默认端口上运行。我还将SQL连接器安装到jar文件中,并将Java JDK添加到服务器计算机中。我可以使用以下代码连接到本地数据库: 但是,当我尝试通过IP地址(例如:192.168.1.45)通过网络连接到它时: 我收到连接错误: 有人知道这个问题是什么吗?我需要添加其他地址吗?我已经使用地址添加了默认端口