现在我已经设了2个statement,但仍不能实现插入,只是能查询。
代码如下:
private selectAndInsert(Connection conn) throws SQLException{
String sql = "select * from a";
ResultSet rs = null;
Statement st = null;
Statement st1 = null;
try {
st = conn.createStatement(rs.TYPE_SCROLL_INSENSITIVE,rs.CONCUR_READ_ONLY);
rs = st.executeQuery(sql);
while (rs.next()) {
String values = "";
java.sql.ResultSetMetaData meta1 = rs.getMetaData();
for (int i = 1; i <= meta1.getColumnCount(); i++) {
if (!meta1.getColumnName(i).toUpperCase().equals("ROWNUM")) {
int type = meta1.getColumnType(i);
switch (type) {
case Types.CHAR:
case Types.VARCHAR:
values += "'" + rs.getString(i) + "',";
break;
case Types.INTEGER:
case Types.SMALLINT:
int it = rs.getInt(i);
values += "'" +Integer.toString(it) + "',";
break;
case Types.FLOAT:
case Types.DOUBLE:
case Types.REAL:
case Types.DECIMAL:
case Types.NUMERIC:
double db = rs.getDouble(i);
values += "'" + Double.toString(db) + "',";
break;
case Types.DATE:
break;
default:
String dateStr = DateTimeUtil.toString(rs.getDate(i),true);
if(!dateStr.equals("null")){
values += "'" + dateStr + "',";
}
else{
values += "null,";
}
break;
}
}
}
values += "'0','" + batchid + "'";
// System.out.print("字符传values="+values);
String sqlInsert = "insert into b values(" + values + ")";
try {
st1 = conn.createStatement(rs.TYPE_SCROLL_INSENSITIVE,rs.CONCUR_UPDATABLE);
st1.executeUpdate(sqlInsert);//将查询出的字段值插入到S_M_INH_DOC
System.out.print("插入s_m_inh_doc成功");
}
catch (Exception ex) {
try {
if (conn != null) {
conn.rollback();
}
}
catch (Exception ex1) {
System.out.print("子函数异常"+ex1.getMessage());
}
}
}
}
catch (SQLException daox) {
throw daox;
}
finally{
st.close();
st1.close();
}
return ;
}
代码如下:
private selectAndInsert(Connection conn) throws SQLException{
String sql = "select * from a";
ResultSet rs = null;
Statement st = null;
Statement st1 = null;
try {
st = conn.createStatement(rs.TYPE_SCROLL_INSENSITIVE,rs.CONCUR_READ_ONLY);
rs = st.executeQuery(sql);
while (rs.next()) {
String values = "";
java.sql.ResultSetMetaData meta1 = rs.getMetaData();
for (int i = 1; i <= meta1.getColumnCount(); i++) {
if (!meta1.getColumnName(i).toUpperCase().equals("ROWNUM")) {
int type = meta1.getColumnType(i);
switch (type) {
case Types.CHAR:
case Types.VARCHAR:
values += "'" + rs.getString(i) + "',";
break;
case Types.INTEGER:
case Types.SMALLINT:
int it = rs.getInt(i);
values += "'" +Integer.toString(it) + "',";
break;
case Types.FLOAT:
case Types.DOUBLE:
case Types.REAL:
case Types.DECIMAL:
case Types.NUMERIC:
double db = rs.getDouble(i);
values += "'" + Double.toString(db) + "',";
break;
case Types.DATE:
break;
default:
String dateStr = DateTimeUtil.toString(rs.getDate(i),true);
if(!dateStr.equals("null")){
values += "'" + dateStr + "',";
}
else{
values += "null,";
}
break;
}
}
}
values += "'0','" + batchid + "'";
// System.out.print("字符传values="+values);
String sqlInsert = "insert into b values(" + values + ")";
try {
st1 = conn.createStatement(rs.TYPE_SCROLL_INSENSITIVE,rs.CONCUR_UPDATABLE);
st1.executeUpdate(sqlInsert);//将查询出的字段值插入到S_M_INH_DOC
System.out.print("插入s_m_inh_doc成功");
}
catch (Exception ex) {
try {
if (conn != null) {
conn.rollback();
}
}
catch (Exception ex1) {
System.out.print("子函数异常"+ex1.getMessage());
}
}
}
}
catch (SQLException daox) {
throw daox;
}
finally{
st.close();
st1.close();
}
return ;
}
解决方案 »
- 重大发现一个jdk的大bug!高人速来!
- 如何用XmlPullparser 解析xml文件中的属性?
- 请教高手们:反射机制构造对象(用带参构造函数)
- final和abstract同时修饰一个类时,哪个在前,哪个在后或者两个不能同时修饰一个类?????
- 如何来检测软件在测试过程中覆盖率?有这样工具吗?
- 高手请进!急急急!!!请问怎么把Jsp页上的对象传回到Action中处理阿。
- 如何实现能够对事件响应的类
- 请问PreparedStatementWrapper的用法和作用?
- 求解决一个关于hashcode的问题?
- 大家还是回到MS的怀抱吧,java没前途的。
- JTDS为何调用失败
- 请教jsp学习的方法?
吗?
但我想将从query字句中所得的结果(比如说有3条记录),分别用rs.getXXXX()循环取出拼成3个values(是insert语句中的values),插入到b表。
其中query字句中循环进行insert操作,即从结果集中取一条记录,插入到b表中一条记录。
这地方,我必须用循环嵌套sql语句操作。
记得有的朋友说一边query,一边insert,得用不同的statement,但我已经用了不同的statement,还是不行,不知道为什么?
真不知为什么啊。