【问题标题】:Java GUI syntax error in SQL statmentSQL 语句中的 Java GUI 语法错误
【发布时间】:2014-12-04 03:29:16
【问题描述】:
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 对应的手册 用于在“表 itemmanage(itemID,purchesPrice,quantity,vendor, unitM)values(DA atline 1

【问题讨论】:

  • 第一个属性缺少单引号:values( "+。但尽量使用准备好的语句。
  • 我尝试保存数据时出错
  • @DanRox,我们的意思是,向我们展示错误。
  • 当我尝试保存数据时出现错误,它说**您在 SQLSYNTAX 中有错误检查与您的 SQL SERVER 版本相对应的手册**
  • @DanRox,不要让我们的生活变得更艰难,我们是来帮助你的。请编辑您的主帖以包含FULL错误消息。

标签: java sql syntax


【解决方案1】:

正如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;

注意:代码未经测试。

【讨论】:

  • @Dan,同时从查询中删除表。
【解决方案2】:

天哪,谢谢@Orel Eraki,当然除了不平衡的单引号之外,您还必须遵循正确的 SQL 插入语法并使用“INSERT INTO ...”的形式,这样尝试(请参阅我的更改直接在 "values(" 作为 Orel Eraki 之一之后(没有 'table' "keyword" 之后进入):

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+ "')";

【讨论】:

  • 同样的问题,我修复了你们所说的每件事,仍然是同样的问题
  • 查看我的更新,上述答案的 cmets 中的 Orel Eraki 提供了第二次更正。
  • 当涉及到此类异常时,我建议您打印出类似 SQL_insert 的字符串(System.out.println 或其他内容),以便您可以将其复制并粘贴到 SQL Developer、Toad、Squirrel 等工具中或其他更好地查看此类问题的方法。
  • 说到 SQL 本身,别担心,我已经是 SWE 10 年了,仍然可以快速查看谷歌,询问诸如“ insert into”之类的问题
  • THNX 已经修复,现在可以正常工作了
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-07
  • 2015-06-19
  • 2021-12-18
相关资源
最近更新 更多