我用Preparedstement的setXXX()方法存储数据时抛出异常:无效的列索引。
程序如下:
public class Test {
 Connection conn;
 Statement stmt;
 PreparedStatement pstmt;
 public static void main(String[] args) {
  Test test = new Test();
  try {
   test.base();
   test.insert();
  } catch (SQLException e) {
   e.printStackTrace();
  } }  private void insert() throws SQLException {
  pstmt = conn.prepareStatement("insert into stu values");
  pstmt.setInt(1,2);
  pstmt.setString(2,"黄蓉");

  pstmt.executeUpdate();
  conn.commit();
 } public void base() throws SQLException{
  DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
  conn = DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:orcl", "dbuser", "024420");
  
 }

解决方案 »

  1.   

    private void insert() throws SQLException { 
      pstmt = conn.prepareStatement("insert into stu values"); 
      pstmt.setInt(1,2); 
      pstmt.setString(2,"黄蓉"); 
      pstmt.executeUpdate(); 
      conn.commit(); 

    这个sql语句values后面应该先用?号占位.
      

  2.   

    insert into stu values(?,?)
      

  3.   

     pstmt = conn.prepareStatement("insert into stu values set id = ?, name = ?"); 
     pstmt.setInt(1,2); 
      pstmt.setString(2,"黄蓉"); 
      pstmt.executeUpdate(); 
      conn.commit();
      

  4.   


    对了 "insert into stu values(?,?)"
      

  5.   

    pstmt = conn.prepareStatement("insert into stu values"); 这个sql语句有问题,改为
    pstmt = conn.prepareStatement("insert into stu values (?,?)");