MYSQL传入值的语句求解

ID = s1;
PASSWORD = s2;
NAME = s3;
s1,s2,s3是传进来的参数,有具体值,但是以
sql = "insert into qq(ID,PASSWORD,NAME) values(ID,PASSWORD,NAME)";
st.executeUpdate(sql);
写入数据库,数据库中的ID,PASSWORD,NAME都是空的,但是
System.out.println(ID);
System.out.println(PASSWORD);
System.out.println(NAME);这样检验ID这些的值又是有的,求问为什么写入数据库就为空了?

zhuce.yon(S1,S2,S3);

public class zhuce {

public static void yon(String s1, String s2, String s3)
{
    String ID = null;
    String PASSWORD = null;
    String NAME = null;

    ID = s1;
    PASSWORD = s2;
    NAME = s3;
    Connection con = null;
    String sql;
    Statement st = null;
    try {
        con = JDBC.getConnection();
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        JOptionPane.showMessageDialog(null,"数据库连接失败!","错误",2);
        e.printStackTrace();
    }
    try {
        System.out.println(ID);
        System.out.println(PASSWORD);
        System.out.println(NAME);
        st = con.createStatement();
    } catch (SQLException e) {
        // TODO Auto-generated 
        e.printStackTrace();
    }
    sql = "insert into qq(ID,PASSWORD,NAME) values(ID,PASSWORD,NAME)";
    try {
        st.executeUpdate(sql);
    } catch (SQLException e) {
        // TODO Auto-generated catch block
        JOptionPane.showMessageDialog(null,"注册失败","错误",2);
        e.printStackTrace();
    }
}

}

解决了,应该用 sql = "insert into qq(id,password,name) values ("+s1+","+s2+","+s3+")";

1,打印下sql这个值 或者断点调试下
2,为啥要定义三个字段那么麻烦?直接sql = "insert into qq(ID,PASSWORD,NAME) values(s1,s2,s3)";??

哪有把id 设成String类型的啊 那数据库怎么自增啊 还有变量名怎么全是大写 又不是静态final修饰的

ID = s1;
PASSWORD = s2;
NAME = s3;
s1,s2,s3是传进来的参数,有具体值,但是以
sql = "insert into qq(ID,PASSWORD,NAME) values(ID,PASSWORD,NAME)";

你这样插入 id password name 不都已经赋值了吗

比如s1=1 ;s2=张三;s3=123;
那sql不就变成这样了sql = "insert into qq(‘1’,‘张三’,‘123’) values(‘1’,‘张三’,‘123’)";

所以你的字段名不能这么写,应该这么写
sql = "insert into qq(‘ID’,‘PASSWORD’,‘NAME’) values(ID,PASSWORD,NAME)";
字段名加引号

图片说明 三个类型都是varchar类型