https://zhidao.baidu.com/question/540539955.html?fr=iks&word=jdbc+sql%D3%EF%BE%E4&ie=gbk
JDBC JAVA数据库插入语句报错
你妹的,写了占位符你又不用东西填,sql当然错了,报的sql不完整
两种方案
A。 valuses后的四个问号直接写上参数
B。用import java.sql.PreparedStatement;包下的PreparedStatement方法
预编的方式进行填充示例
PreparedStatement ps = null;
sql = "insert into record(cId,bId,mId,borrowDate,returnDate) values(?,?,?,?,?)";
ps.setInt(1,第一个值);
ps.setInt(2,第二个值);
ps.setInt(3,第三个值);
ps.setInt(4,第四个值);
//提交1234必须写setInt是举例子你看自己的那些字段是什么类型的
ps.executeUpdate();
范例:
String sql=""+
"insert into shopping"+
"(user_name,sex,age,birthday,email,mobile," + (注意“+”号的用法,之前我漏掉了一个加号,导致报错Syntax error on token ""values("", delete this token,语法错误)
"create_user,create_date,update_user,update_date,isdel)"+
"values("+
"?,?,?,?,?,?,?,current_date(),?,current_fste(),?)";
或者
String sql="insert into shopping(user_name,sex,age,birthday,email,mobile,create_user,create_date,update_user,update_date,isdel)values(?,?,?,?,?,?,?,current_date(),?,current_fste(),?)";
下面sql语句用参数填充:
PreparedStatement ptmt=conn.prepareStatement(sql); //编译sql语句
ptmt.setString(1, g.getUser_name()); //传递参数进来
ptmt.setInt(2,g.getSex());
ptmt.setInt(3, g.getAge());
ptmt.setDate(4, (Date) g.getBirthday());
ptmt.setString(5,g.getEmail());
ptmt.setString(6, g.getMobile());
ptmt.setString(7, g.getCreate_user());
ptmt.setString(8, g.getUpdate_user());
ptmt.setInt(9,g.getIsdel());
ptmt.execute();