Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这个SQL子句有什么问题?_Java_Mysql_Sql_Jdbc - Fatal编程技术网

Java 这个SQL子句有什么问题?

Java 这个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

如果buyid(主键)是一个特定的值,我将尝试更新列amount

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运行它,它会工作。