我是靠谱客的博主 跳跃月饼,最近开发中收集的这篇文章主要介绍jdbc连接db2,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

尝试使用jdbc连接sample数据库

public class Db2Test {
public static void main(String[] args) throws Exception {
Class.forName("com.ibm.db2.jcc.DB2Driver");
Connection conn = DriverManager.getConnection("jdbc:db2://localhost:50000/sample", "db2admin", "db2admin");
ResultSet rs = conn.createStatement().executeQuery("select count(*) from STAFF");
rs.next();
int count = rs.getInt(1);
System.out.println(count);
rs.close();
conn.close();
}
}

 

出现如下错误:

Exception in thread "main" com.ibm.db2.jcc.am.io: DB2 SQL Error: SQLCODE=-204, SQLSTATE=42704, SQLERRMC=DB2ADMIN.STAFF, DRIVER=3.57.82
at com.ibm.db2.jcc.am.bd.a(bd.java:676)
at com.ibm.db2.jcc.am.bd.a(bd.java:60)
at com.ibm.db2.jcc.am.bd.a(bd.java:127)
at com.ibm.db2.jcc.am.km.c(km.java:2506)
at com.ibm.db2.jcc.am.km.d(km.java:2483)
at com.ibm.db2.jcc.am.km.a(km.java:1963)
at com.ibm.db2.jcc.t4.db.g(db.java:139)
at com.ibm.db2.jcc.t4.db.a(db.java:39)
at com.ibm.db2.jcc.t4.t.a(t.java:32)
at com.ibm.db2.jcc.t4.sb.h(sb.java:135)
at com.ibm.db2.jcc.am.km.eb(km.java:1934)
at com.ibm.db2.jcc.am.km.a(km.java:2863)
at com.ibm.db2.jcc.am.km.a(km.java:628)
at com.ibm.db2.jcc.am.km.executeQuery(km.java:612)
at hello.Db2Test.main(Db2Test.java:11)

 

将jdbc url改成"jdbc:db2://localhost:50000/sample:retrieveMessagesFromServerOnGetMessage=true;"

 

这时会提示比较详细的错误信息:

Exception in thread "main" com.ibm.db2.jcc.am.io: "DB2ADMIN.STAFF" is an undefined name..

 

我们启动db2数据库然后对数据库进行各种操作。比如建sample数据库,默认的schema难道不db2admin吗???不是的,通过以下sql查看当前的schema


 

原来是开机用户名。。。于是在jdbc连接中使用开机用户名和密码,这次就连接成功了。

 

如果非要想使用db2admin用户怎么办?那么就显示的指定schema

 Class.forName("com.ibm.db2.jcc.DB2Driver");
Connection conn = DriverManager.getConnection("jdbc:db2://localhost:50000/sample:retrieveMessagesFromServerOnGetMessage=true;", "db2admin", "db2admin");
ResultSet rs = conn.createStatement().executeQuery("select count(*) from "CYPER.YIN".staff");
rs.next();
 

或者这样


Class.forName("com.ibm.db2.jcc.DB2Driver");
Connection conn = DriverManager.getConnection("jdbc:db2://localhost:50000/sample:retrieveMessagesFromServerOnGetMessage=true;currentSchema=CYPER.YIN;", "db2admin", "db2admin");
ResultSet rs = conn.createStatement().executeQuery("select count(*) from staff");

 按理说,schema是不区分大小写的。可能是我的用户名中有点号的原因。必须大写才可以。

 

 

可以在建表前切换到其它的schema

使用命令set current schema <schema_name>

(如果schema不存在也可以,会隐式的创建)

 

然后这个表的schema就不再是开机用户了。

 

可以使用select * from foo.test1来访问创建的新表。

 

 

难用!

 

 

 

 

最后

以上就是跳跃月饼为你收集整理的jdbc连接db2的全部内容,希望文章能够帮你解决jdbc连接db2所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部