浏览 882 次
|
锁定老贴子 主题:jdbc连接DB2数据库并插入数据出错
该帖已经被评为新手帖
|
|
|---|---|
| 作者 | 正文 |
|
最后更新时间:2007-07-08 关键字: jdbc,db2
错误提示信息:
连接成功! com.ibm.db2.jcc.b.SqlException: DB2 SQL error: SQLCODE: -204, SQLSTATE: 42704, SQLERRMC: DB2ADMIN.CLIENTS at com.ibm.db2.jcc.b.ig.e(ig.java:1594) at com.ibm.db2.jcc.b.ig.a(ig.java:1204) at com.ibm.db2.jcc.c.gb.g(gb.java:140) at com.ibm.db2.jcc.c.gb.a(gb.java:39) at com.ibm.db2.jcc.c.w.a(w.java:34) at com.ibm.db2.jcc.c.vb.f(vb.java:139) at com.ibm.db2.jcc.b.ig.n(ig.java:1175) at com.ibm.db2.jcc.b.jg.eb(jg.java:1877) at com.ibm.db2.jcc.b.jg.d(jg.java:2319) at com.ibm.db2.jcc.b.jg.W(jg.java:463) at com.ibm.db2.jcc.b.jg.executeUpdate(jg.java:446) at org.xredleaf.InsertXmlFile.insertFile(InsertXmlFile.java:24) at org.xredleaf.Test.main(Test.java:10) 下面是我的原代码: package org.xredleaf;
import java.sql.*;
public class Connect {
private static String user = "db2admin";
private static String pwd = "123456789";
private static String url = "jdbc:db2://localhost:50000/sample";
public static Connection getConn(){
Connection conn=null;
try {
Class.forName("com.ibm.db2.jcc.DB2Driver").newInstance();
conn = DriverManager.getConnection(url, user, pwd);
System.out.println("\n连接成功!");
}
catch (Exception e) { System.out.println("\n连接失败!");e.printStackTrace(); }
return conn;
} // end getConn();
public static void closeConn(Connection conn){
try {
if(conn == null) { return; }
conn.close();
}
catch (Exception e) { e.printStackTrace(); }
finally {
try { conn.close(); }
catch (Exception e) { }
}
} // end closeConn();
}
package org.xredleaf;
import java.sql.*;
import java.io.*;
public class InsertXmlFile {
public static void insertFile(){
try {
int id = 1885;
String name = "Amy Liu";
String status = "Silver";
String fn = "d:/XMLFiles/Client1885.xml";
Connection conn = Connect.getConn();
String query =
"insert into clients (id, name, status, contactinfo) values (?, ?, ? ,?)";
PreparedStatement insertStmt = conn.prepareStatement(query);
insertStmt.setInt(1, id);
insertStmt.setString(2, name);
insertStmt.setString(3, status);
File file = new File(fn);
insertStmt.setBinaryStream(4, new FileInputStream(file), (int)file.length());
if (insertStmt.executeUpdate() != 1) {
System.out.println("No record inserted.");
}else{
System.out.println("插入成功!");
}
//conn.close();
Connect.closeConn(conn);
}
catch (Exception e) { e.printStackTrace();}
}
}
package org.xredleaf;
public class Test {
/**
* @param args
*/
public static void main(String[] args) {
InsertXmlFile dao = new InsertXmlFile();
dao.insertFile();
}
}
大家帮我看看到底是哪里错了??? 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-07-08
错误应该是在这里:
# Connection conn = Connect.getConn(); # # String query = # "insert into clients (id, name, status, contactinfo) values (?, ?, ? ,?)"; # PreparedStatement insertStmt = conn.prepareStatement(query); # insertStmt.setInt(1, id); # insertStmt.setString(2, name); # insertStmt.setString(3, status); # File file = new File(fn); # insertStmt.setBinaryStream(4, new FileInputStream(file), (int)file.length()); 检查一下sql语句,和数据库表里的表是否对应。 |
|
| 返回顶楼 | |
|
最后更新时间:2007-07-08
可以看出是你SQL的问题,错误已经显示了比较清楚的定位。
|
|
| 返回顶楼 | |
|
最后更新时间:2007-07-08
ok,解决,原来db2 里的clients表是用administrator创建的,然后他的模式属于administrator,所以得用administrator连接数据库,或者是在表名用加上administrator.clients,谢谢各位了
|
|
| 返回顶楼 | |






