public static void genSqlInsert(Object obj, String tblName,Connection conn) throws Exception {
StringBuffer sbInsert = new StringBuffer();
StringBuffer sbValues = new StringBuffer();
String reString = null;
int num=0;
Map map=new HashMap(); sbInsert.setLength(0);
sbInsert.append("insert into ").append(tblName).append("(");

sbValues.setLength(0);
sbValues.append(")values(");
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
Field[] ss = obj.getClass().getDeclaredFields(); for (int i = 0; i < ss.length; i++) {
String name = ss[i].getName();
Class params[] = {};
Object paramsObj[] = {};
Method thisMethod = obj.getClass().getDeclaredMethod(
"get" + firstToUpperCase(name), params);
Object objValue = thisMethod.invoke(obj, paramsObj);
// System.out.println("name=="+name+"objValue=="+objValue);
if (null != objValue) {
sbInsert.append(name + ",");
sbValues.append("?,");
map.put(name.toString(), objValue);
}
}
sbInsert.deleteCharAt(sbInsert.length() - 1);
sbValues.deleteCharAt(sbValues.length() - 1);
sbValues.append(")");
reString = sbInsert.append(sbValues).toString();
System.out.println("sql::"+reString);
ps=conn.prepareStatement(reString);
System.out.println(map.size());
int index = 0;
for (int j = 0; j <= map.size(); j++) {
String name = ss[j].getName();
Object mapobj = map.get(name.toString());

if (mapobj != null) {
index++;
System.out.println(index);
System.out.println(mapobj);
ps.setString(index, "123");
// if (ss[j].getType().toString().equals("class java.lang.String")) {
// index++;
// ps.setString(index, mapobj.toString());
// } else if (ss[j].getType().toString().equals("int")) {
// index++;
// ps.setInt(index, Integer.parseInt(mapobj.toString()));
// } else if (ss[j].getType().toString().equals("double")) {
// index++;
// ps.setDouble(index, Double.parseDouble(mapobj.toString()));
// } else if (ss[j].getType().toString().equals("class java.util.Calendar")&& !("paydate".equals(name))) {
// index++;
// ps.setDate(index, java.sql.Date.valueOf(mapobj.toString()));
// } else if ("paydate".equals(name)) {
// index++;
//
// } else {
// System.out.println(ss[j].getType().toString());
// throw new Exception("new Dvide");
// }
}
}
num = ps.executeUpdate(reString);
if (num == 0) {
System.out.println("执行失败!!");
} else {
System.out.println("执行成功!!");
}


System.out.println("插入sql==》" + reString); }输出结果为:
sql::insert into D_CODEITEM(codeno,itemcode,itemname,opcode,opunitcode)values(?,?,?,?,?)
5
1
ONL
2
TEST
3
统一接口绑定变量测试
4
lzg
5
3010100
java.sql.SQLException: ORA-01008: 并非所有变量都已关联 at oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:134)
at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:289)
at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:573)
at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1891)
at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:1093)
at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.java:2047)
at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.java:1940)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:2709)
at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:796)
at test1.SQLGenerator.genSqlInsert(SQLGenerator.java:91)
at test1.SQLGenerator.main(SQLGenerator.java:124)
求原因!!数据库连接没有问题。