desc = "Fishing Hooks";
code = "FH";
size = "#2";
cost = 2;
qnty = Integer.parseInt(hook2amount.getText());
amnt = qnty * cost;
Products h2 = new Products(desc,code,size,cost,qnty,amnt);
list.add(h2);
try {
Class.forName("com.mysql.jdbc.Driver");
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/test", "root", "");
pst = con.prepareStatement("insert into purchase(username,code,desc,size,cost,quantity,date) values(?,?,?,?,?,?,?)");
pst.setString(1, user);
pst.setString(2, code);
pst.setString(3,desc);
pst.setString(4,size);
pst.setString(5, String.valueOf(cost));
pst.setString(6, String.valueOf(qnty));
pst.setString(7, date);
pst.executeUpdate();
} catch (Exception e) {
System.out.println("Error " + e);
}
我收到语法错误提示
错误java.sql.SQLSyntaxErrorException:您的SQL语法有错误;检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在'desc,size,cost,quantity,date)值('sam','FH','Fishing Hooks','#2','2第1行的','2','7 /'
我找不到我的错误
答案 0 :(得分:1)
desc
是MariaDB中的保留关键字,在它周围加上一些反引号,它应该可以工作。
答案 1 :(得分:0)
insert语句本身是
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:key name="map"
match="Message1/Response/CE//*[action = 'New']"
use="concat(ancestor::CE/id, '|', node-name(.), '|', count((., preceding-sibling::*[node-name(.) = node-name(current())])))"/>
<xsl:template match="Messages">
<xsl:apply-templates select="Message2"/>
</xsl:template>
<xsl:template match="Message2">
<Response>
<xsl:apply-templates select="Response/*"/>
</Response>
</xsl:template>
<xsl:template match="Message2/Response/CE//*[key('map', concat(ancestor::CE/id, '|', node-name(.), '|', count((., preceding-sibling::*[node-name(.) = node-name(current())]))))]">
<xsl:copy-of select="key('map', concat(ancestor::CE/id, '|', node-name(.), '|', count((., preceding-sibling::*[node-name(.) = node-name(current())]))))"/>
</xsl:template>
</xsl:transform>
请注意,insert into purchase(username,code,desc,size,cost,quantity,date) values(?,?,?,?,?,?,?)
是保留关键字。
您需要对其进行转义或更改其名称。优良作法是无论如何都要转义所有列名,因此将insert语句更改为:
desc
还应该使用与其数据类型相对应的方法来设置参数。给定您的代码,而不是insert into purchase(`username`,`code`,`desc`,`size`,`cost`,`quantity`,`date`) values (?,?,?,?,?,?,?)
到处都是setString
,将setInt
用作整数值cost
和qnty
。