如果buyid(主键)是特定值,我正在尝试更新列量 .
UPDATE portfolio set amount=40 WHERE buyid=3
我使用JDBC和MySql,每次我尝试执行语句时都会遇到以下异常:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:SQL语法中有错误;检查与MySQL服务器版本对应的手册,以便在第1行的'buyid = 3'附近使用正确的语法
表组合结构:
buyid int
username varchar
stockname varchar
priceperstock float
amount int
Javasourcecode:
public void sellStock(int buyid, int amount, float currentprice, String user) {
...
try {
stmt = this.conn.createStatement();
System.out.println(fetchedamount);
System.out.println("UPDATE portfolio
SET amount=" + fetchedamount
+ " WHERE buyid=" + buyid);
stmt.execute("UPDATE stockman.portfolio
SET amount=" + fetchedamount
+ "WHERE buyid=" + buyid+"");
// update capital
newmoney = amount * currentprice + oldmoney;
} catch (SQLException ee) {
ee.printStackTrace();
}
3 回答
只需添加空格即可解决问题 .
在
stmt.execute()
您生成的查询就像"UPDATE stockman.portfolio set amount=23WHERE buyid=54 "
这里
23Where
是一整个字符串,所以你必须在这两者之间留出空间 .在“和以下之类的地方之间留出空间:
并删除最后
+""
补充
stm.execute
行:stmt.execute("UPDATE stockman.portfolio SET amount=" + fetchedamount + " WHERE buyid=" + buyid+" ");
或者:
stmt.execute("UPDATE stockman.portfolio SET amount='" + fetchedamount + "' WHERE buyid='" + buyid+"' ");