学习JDBC时遇到了一个关于占位符使用的问题

请问这里为什么报错呢?

try {
            conn = dataSource.getConnection();
            String sql = "insert into user values(?,?,?,?);";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1,"2333");
            pstmt.setString(2,"2333");
            pstmt.setString(3,"2333");
            pstmt.setString(4,"2333");
    }

报错信息是(?,?,?,?)附近语法错误,我如果改成下面这样就不会报错

try {
            conn = dataSource.getConnection();
            String sql = "insert into user values('123','123','123','123');";
            pstmt = conn.prepareStatement(sql);
//          pstmt.setString(1,"2333");
//          pstmt.setString(2,"2333");
//          pstmt.setString(3,"2333");
//          pstmt.setString(4,"2333");
    }

mybatis 占位符从0开始

看着没啥问题 ,看下你的问号是不是英文的问号,还有逗号也检查下

sql改成
String sql = "insert into user (字段列表) value (?,?,?,?)";
如果字段是表的全部,可以去掉列表