概述
尝试使用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所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复