create a new statement from a new db connection

解决方案 »

  1.   

    takecare 能说再详细点吗?我很菜的,呵呵
      

  2.   

    <%  
    String sql="select * from re_"+xibie+"_"+nianji+"_"+xueqi;
    ResultSet rs3=stmt.executeQuery(sql);
    Statement  stmt1=DbConnect.createStatement() ;
    java.sql.ResultSetMetaData m = rs3.getMetaData();
    int nCols = m.getColumnCount();
     
         for(int i=2;i<nCols;i++)
    {
      String strCol=m.getColumnName(i+1);
    if (strCol.equals(kecheng2))
     {
     strCol=m.getColumnName(i+2);
     i=i+1;
      }
       
    int value=stmt1.executeUpdate("alter table temp add "+strCol+" int");
            
     }%>
      

  3.   

    问题1:按照你的逻辑,并没有将不等于kecheng2的列添加到了 temp 表中,你的  if (strCol.equals(kecheng2))
     {
     strCol=m.getColumnName(i+2);
     i=i+1;
      }
    语句有问题。问题2:当第二次调用 stmt.execute 时rs3被关闭,因为所有stmt的execute 方法都隐式地关闭当前活动 ResultSet对象。你可以先把所有的列名先存放到一个 Vector 里面,然后再调用executeUpdate 就没事了。
      

  4.   

    帮你重写了ResultSet rs3=stmt.executeQuery(sql);
    String kecheng2="aaaaaaa";java.sql.ResultSetMetaData m = rs3.getMetaData();
    int nCols = m.getColumnCount();
    String strCol[]=new String[nCols];
    String tempSql="";
    for(int i=0;i<nCols;i++)
    {
        strCol[i]=m.getColumnName(i+1).trim();
    }
     for(int i=0;i<nCols;i++)
    {
    if (strCol[i].equalsIgnoreCase(kecheng2))
    continue;
    tempSql+=", "+strCol[i]+ " int";
     }
     tempSql=tempSql.substring(1); int value=stmt.executeUpdate("alter table temp add "+tempSql);参照着改再看看