Java 这个SQL子句有什么问题?
如果buyid(主键)是一个特定的值,我将尝试更新列amountJava 这个SQL子句有什么问题?,java,mysql,sql,jdbc,Java,Mysql,Sql,Jdbc,如果buyid(主键)是一个特定的值,我将尝试更新列amount UPDATE portfolio set amount=40 WHERE buyid=3 我使用JDBC和MySql,每次尝试执行语句时都会出现以下异常: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您有一个 SQL语法错误;检查与您的产品相对应的手册 MySQL服务器版本,以便在“buyid=3”附近使用正确的语法 第1行 投资组合的表结构: buyid
UPDATE portfolio set amount=40 WHERE buyid=3
我使用JDBC和MySql,每次尝试执行语句时都会出现以下异常:
com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您有一个
SQL语法错误;检查与您的产品相对应的手册
MySQL服务器版本,以便在“buyid=3”附近使用正确的语法
第1行
投资组合的表结构:
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();
}
在stmt.execute()
中,生成的查询类似于“更新stockman.portfolio set amount=23,其中buyid=54”
此处23其中
是一个完整的字符串,因此必须在这两个字符串之间留出空间
在“和”之间留出空间,如下所示:
" WHERE buyid="
并删除最后一个
+“”
只需在解决问题之前添加空间即可
stmt.execute("UPDATE stockman.portfolio
SET amount=" + fetchedamount
+ " WHERE buyid=" + buyid+"");
用以下命令回复
stm.execute
行:
stmt.execute(“更新stockman.portfolio SET amount=“+fetchedamount+”,其中buyid=“+buyid+”);
或:
stmt.execute(“UPDATE stockman.portfolio SET amount=”“+fetchedamount+”,其中buyid=”“+buyid+”);
如果您可以共享表结构,那么buyid
的数据类型如何?您可以直接在mysql客户端中运行此查询吗?buyid的数据类型是否为numberic?您可能需要检查语句中隐藏的字符…例如,空格不是真正的空格(有时只需重新键入表达式就可以解决一些问题)。查询看起来正常。似乎buyid
不是一个数字。如果从myphpadmin运行它,它会工作。