问题描述
我正在尝试使用UPDATE语句将日期更新到表中,但是每次这样做都会出现错误。 我尝试了许多方法,但仍然会收到错误消息。 这是我想做的
public void updateTeacher(Teacher a)
{
int f = Integer.parseInt(a.getiD());
String query = "UPDATE teacher SET (NAME='" + a.getNaMe() + "' ADDRESS='" + a.getAddRess() + "' PHONE_NO="+ a.getPhOne() + " EMAIL='" + a.geteMail() + ") WHERE ID =" + f;
try
{
stmt.executeUpdate(query);
}
catch(SQLException e)
{
System.out.println("Problem in Query");
e.printStackTrace();
}
}
有了这个我得到以下错误
查询com.mysql.jdbc.exceptions.MySQLSyntaxErrorException中的问题:SQL语法有错误; 检查与您的MySQL服务器版本对应的手册以获取正确的语法,以在第1行的“ ADDRESS =”巴基斯坦拉合尔”附近使用PHONE_NO = 2147483647 EMAIL='n.nadeem@bnu.edu.pk WHERE”
请让我知道我错在哪里,请更新声明。
1楼
首先,您根本不应该使用字符串连接,而应该使用参数化查询,因为连接会使代码混乱,并引发SQL注入问题。
就是说,代码中的另一个问题是设置的值之间缺少逗号。 它应该是:
String query = "UPDATE teacher SET NAME='" + a.getNaMe() + "' , ADDRESS='" + a.getAddRess() + "' , PHONE_NO="+ a.getPhOne() + " , EMAIL='" + a.geteMail() + "' WHERE ID =" + f;
阅读有关如何使用更多信息。
2楼
您的更新查询需要在每个“设置”项之后添加逗号,如下所示:
update teacher
set name = 'teachersName',
address = '123 st',
phone = '800-555-5555',
email = 'test@email.com'
where id = 1;
String query = "UPDATE teacher SET NAME='" + a.getNaMe() + "', ADDRESS='" + a.getAddRess() + "', PHONE_NO="+ a.getPhOne() + ", EMAIL='" + a.geteMail() + " WHERE ID =" + f;
电话号码是什么数据类型? 如果它是varchar,也可能需要用单引号引起来
3楼
在各列之间放置a ,并检查PHONE_NO列,例如,缺少'。
SET NAME='" + a.getNaMe() + "', ADDRESS='"