通过SQL语句更新数据时,出现Unknown column ‘XXX’ in ‘field list’ 问题('XXX’表示任意字符)
问题描述:通过预状态通道和update语句修改数据表air中指定id的记录:
/**
* 根据id更新航班
* @param id
* @param airNum 航班号
* @param startTime 日期
* @param destination 目的地
* @return
*/
@Override
public String updateAirById(int id, String airNum, String startTime, String destination) {
ArrayList list = new ArrayList();
String result=null;//返回的结果
list.add(id);
String sql="update air set airNum="+airNum+",startTime="+startTime+",destination="+destination+" where id=?";
try {
int count= update(sql, list);
if (count==1){
result="更新成功!";
}else {
result="更新失败!";
}
} catch (Exception e) {
e.printStackTrace();
}
return result;
}
运行测试方法后报错:
java.sql.SQLSyntaxErrorException: Unknown column '北京' in 'field list'
原因分析:
通过检查数据库中的字段名、实体类中的字段名、字符编码、数据库字段前后的空格,发现都没有问题,突然间想到我这里sql语句中涉及到字段赋值 *** 作,才发现根本原因是sql语句中的单引号和双引号错误,可以看到程序中sql语句中为字段修改的值是直接通过“+”进行连接的,这样是错误的,因为这里三个字段的值需要作为字符串传入,所以需要在双引号外加上英文状态下的单引号。
解决方案:修改sql:
String sql="update air set airNum='"+airNum+"',startTime='"+startTime+"',destination='"+destination+"' where id=?";
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)