SQL语句中的Java GUI语法错误

时间:2014-10-09 09:02:01

标签: java sql syntax

itemID STRING   
purchesPrice DOUBLE   
quantity DOUBLE   
vendor STRING   
unitM  STRING   

jcombo1=CB_vendor.getSelectedItem().toString();  
jcombo2=CB_unit.getSelectedItem().toString();      

conn=ShopDb.database();

Sql_insert="insert into table itemmanag(itemID,purchesPrice,sellPrice,quantity,vendor,unitM)
values
( "+txt_itemID.getText()+"','"+Item_Pprice.getText()+"','"+txt_itemSprice.getText()
   +"','"+txt_qunti.getText()+"','" +jcombo1+"','"+jcombo2+ " ')";

错误:

  

你的sql语法有错误;检查与您的MYSQL SERVER对应的手册          正确的syntanx版本,用于附近" table itemmanage(itemID,purchesPrice,数量,供应商,          unitM)值(DA atline 1

2 个答案:

答案 0 :(得分:2)

Jens所述,您在值的开头缺少单引号。

改变这个:

values( "+txt_itemID.getText()

有了这个:

values('" + txt_itemID.getText()

另外:从查询中删除关键字table

此外,您应该高度考虑更改您的sql构建以使用Prepared Statements以获得更清晰的代码,更重要的是避免使用SQL-Injections

如果您仍然坚持使用此查询而不是Prepared Statements,那么最好是让您的查询更具可读性。

示例:

String valuesFormatted = String.format(
    "('%s', %d, '%s', '%s', '%s', '%s')"
    , txt_itemID.getText()
    , Double.parseDouble(Item_Pprice.getText())
    , txt_itemSprice.getText()
    , txt_qunti.getText()
    , jcombo1
    , jcombo2)";

Sql_insert = "
    insert into itemmanag
    (itemID,purchesPrice,sellPrice,quantity,vendor,unitM )
    values " + valuesFormatted;

注意:代码尚未经过测试。

答案 1 :(得分:0)

哦,天哪,谢谢@Orel Eraki,当然除了不平衡的单引号之外,你必须遵循正确的SQL插入语法和hava一种'INSERT INTO ...',试试这样(看我的变化dirctly在“值(”作为Orel Eraki之一(进入之后没有'table'“关键字”):

Sql_insert="insert into itemmanag(itemID,purchesPrice,sellPrice,quantity,vendor,unitM )values('"+txt_itemID.getText()+"','"+Item_Pprice.getText()+"','"+txt_itemSprice.getText()+"','"+txt_qunti.getText()+"','" +jcombo1+"','"+jcombo2+ "')";