首页 文章

这个SQL子句有什么问题?

提问于
浏览
0

如果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 回答

  • 7

    只需添加空格即可解决问题 .

    stmt.execute("UPDATE stockman.portfolio
                      SET amount=" + fetchedamount
                   + " WHERE buyid=" + buyid+"");
    
  • 0

    stmt.execute() 您生成的查询就像
    "UPDATE stockman.portfolio set amount=23WHERE buyid=54 "

    这里 23Where 是一整个字符串,所以你必须在这两者之间留出空间 .

    在“和以下之类的地方之间留出空间:

    " WHERE buyid="
    

    并删除最后 +""

  • 0

    补充 stm.execute 行: stmt.execute("UPDATE stockman.portfolio SET amount=" + fetchedamount + " WHERE buyid=" + buyid+" ");

    或者: stmt.execute("UPDATE stockman.portfolio SET amount='" + fetchedamount + "' WHERE buyid='" + buyid+"' ");

相关问题