以下是我的程序
我想把a1 a2 a3 a4 的内容插入到表re中
import java.sql.*;    public class access{
      public static void main(String [] args) throws ClassNotFoundException{
        try{
            String a1="ddf";
            String a2="dd";
            String a3="dde";
            String a4="eee";
            
            Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
            Connection con = DriverManager.getConnection("jdbc:odbc:aa"); 
            Statement stmt = con.createStatement();
            stmt.executeUpdate("INSERT INTO re(year,month,day,re) VALUES(a1,a2,a3,a4)");//为什么我这么写 不可以 请给我正确的写法::::
            ResultSet rs = stmt.executeQuery("select * from re"); 
            rs.next();
           // rs.next();
            System.out.println(rs.getString(1)+rs.getString(2));
                  
      }catch(SQLException e){
      System.out.println(e);;    
      }
      }

解决方案 »

  1.   

    stmt.executeUpdate("INSERT INTO re(year,month,day,re) VALUES('"+a1 +"' ,'"+ a2 +"','"+ a3 +"','"+ a4 +"')");
      

  2.   

    同意上面的说法.也可以这样写
    INSERT INTO re(year,month,day,re) VALUES(?,?,?,?)
    再对参数赋值
      

  3.   

    二楼正解,同意
    stmt.executeUpdate(String string)
    参数要求的是字符串楼主写法 a1,a2,a3,a4会被认为是具体要插入的值 而不是变量了
      

  4.   

    stmt.executeUpdate("INSERT INTO re(year,month,day,re) VALUES(a1,a2,a3,a4)");
    这样写变成了字符串常量了,a1,a2,a3,a4自然就传不进入了
      

  5.   

    用PreparedStatement 就可以用到三楼的 ? 代替值,然后置值.
      

  6.   

    Statement 的对象.set***(1,"");
    如:      s.setString(1,a1);
             s.setInt(2,123);
    这样应该没有错,试一下吧~~~