java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver] 参数不足,期待是 1。

2025-03-22 13:06:07
推荐回答(4个)
回答1:

你这么拼接sQL是不行的,第一,容易sql注入。第二,效率极其低下。你上面的sql直接用Java变量拼接sql,它每次执行,都要进行校验和编译,在正常项目中不可取,规范代码,养成良好习惯最重要。你用字符串拼接当然要加单引号了,如2楼所说。规范的写法如批量插入:@Override
public int[] batchInsert(final List> dataMapList) {
String sql = "insert into DATA_FB_EUROP_AVG_ODDS(EXPECT,LOTTID,XID,SVAL,CVAL,MVAL,CREATE_TIME) values(?,?,?,?,?,?,now())";
int[] insertCount = jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() {

@Override
public void setValues(PreparedStatement ps, int i) throws SQLException {
ps.setString(1, dataMapList.get(i).get("expect"));
ps.setString(2, dataMapList.get(i).get("lottid"));
ps.setString(3, dataMapList.get(i).get("xid"));
ps.setString(4, dataMapList.get(i).get("s"));
ps.setString(5, dataMapList.get(i).get("c"));
ps.setString(6, dataMapList.get(i).get("m"));
}

@Override
public int getBatchSize() {
return dataMapList.size();
}
});
return insertCount;
}

回答2:

用 pstmt ,看起来清楚点
connection 会在出 exception 的时候不关闭……

回答3:

"insert into tea(ID,Name,Password) values ('"+Tf1.getText()+"','"+Tf2.getText()+"','"+Tf3.getText()+"')"

回答4:

insert的values里,是不是多了个")"