现在知道以下几个方法:
boolean execute()   
          在此 PreparedStatement 对象中执行 SQL 语句,该语句可以是任何种类的 SQL 语句。 
ResultSet executeQuery() 
在此 PreparedStatement 对象中执行 SQL 查询,并返回该查询生成的 ResultSet 对象。 
int executeUpdate() 
          在此 PreparedStatement 对象中执行 SQL 语句,该语句必须是一个 SQL INSERT、UPDATE 或 DELETE 语句
===================================================
现在有条SQL是:
INSERT INTO B_TABLE
SELECT * FROM A_TABLE
where a...为什么我用execute()和executeQuery() 
都不行呢?错误提示如下:
missing value  keyword

解决方案 »

  1.   

    你把代码贴出来,看看有什么问题。你前面不是已经说的很清楚了吗,select用executeQuery() ,INSERT、UPDATE 或 DELETE用executeUpdate()
      

  2.   

    to:songwq() 
    =======================
    现在我是一条sql里面同时包含了insert和select,目的是把表A中的相关数据select出来再insert表B中------------------
    代码如下: ...

    con.setAutoCommit(false); 
    String sql = "SELECT DATBEGIN, DATEND, VC2KIND FROM A_TABLE ";
    prep = con.prepareStatement(sql);
    rs = prep.executeQuery();
    while (rs.next()) {
    datBegin = rs.getString("DATBEGIN");
    datEnd = rs.getString("DATEND");
    item = rs.getString("VC2KIND");

    }

    ...

    if (item.equals("-1")) {

    ...

    String sql1 = "INSERT INTO B_TABLE "
    + "SELECT * FROM A_TABLE "
    + "where VC2KIND = ?";
    prep = con.prepareStatement(sql1);
    prep.setString(1, datBegin);
    prep.setString(2, datEnd);
    prep.setInt(3, 1);
    //prep.execute();//??
    //rs = prep.executeQuery();//??

    ...
      

  3.   

    首先你要确认数据库支持这种写法:
    insert into a .... select ... from b ...然后用 execute  或者  executeUpdate。
      

  4.   

    to:bigc2001(大C)数据库是支持的 我用pl/sql执行该SQL没有问题
    =========================
    to:xiaoniaoxiangfei() 表A和B字段什么的都完全一样,只是表名不一样
      

  5.   

    那样就是可以的了,然后你用executeUpdate()就可以了
      

  6.   

    to:xiaoniaoxiangfei() executeUpdate()不行 还是报错
    =======================
    to :wxno1() 错误如下:
    似乎很多,能帮忙分析下么?或者给个分析方法的提示,谢谢java.sql.SQLException: ORA-00926: missing VALUES keyword        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:579)
            at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1894)
            at oracle.jdbc.ttc7.TTC7Protocol.parseExecuteFetch(TTC7Protocol.java:109
    4)
            at oracle.jdbc.driver.OracleStatement.executeNonQuery(OracleStatement.ja
    va:2132)
            at oracle.jdbc.driver.OracleStatement.doExecuteOther(OracleStatement.jav
    a:2015)
            at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStateme
    nt.java:2877)
            at oracle.jdbc.driver.OraclePreparedStatement.executeUpdate(OraclePrepar
    edStatement.java:608)
            at org.apache.commons.dbcp.DelegatingPreparedStatement.executeUpdate(Del
    egatingPreparedStatement.java:101)
      

  7.   

    我这里不能测试,只是写了一下。你是一是可以不可以public class test {
        public test() {
        }
        
        public boolean test(){
            boolean flag=false;
            Connection conn = null;
            PreparedStatement pstam = null;
            //连接数据库的,换成你自己的
            PoolSql psql = new PoolSql();
            try {
                conn = psql.getDBConnection();
                StringBuffer sql = new StringBuffer();
                sql.append("insert into test1 ");  ///要插入数据的表
                sql.append("select * from test");   ///查询数据的表
                sql.append("where userName='123' ");  //条件
                pstam = conn.prepareCall(sql.toString());
                int i = pstam.executeUpdate();
                if(i>0)
                {
                    flag=true;
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }finally{
                psql.Close(pstam);
                psql.Close(conn);
            }
            return flag;
        }
        public static void main(String args[])
        {
            test test = new test();
            System.out.println(test.test());
        }
    }
       
      

  8.   

    String sql1 = "INSERT INTO B_TABLE "
           + "SELECT * FROM A_TABLE "
           + "where VC2KIND = ?";
    prep = con.prepareStatement(sql1);
    prep.setString(1, datBegin);
    prep.setString(2, datEnd);
    prep.setInt(3, 1);你这里好像有问题!sql1 中只有一个“?”,为什么 prep 设置了三个参数?
      

  9.   

    to:bao110908(Baobao)
     
    不好意思,我的这段代码省略了部分,包括sql语句,原来的sql是有3个参数的,单独执行sql时没有出错