我的代码中有以下行:
int check1 = stmt3.executeUpdate("update ShopSystem.Grocery where g_id="+g_id+" set g_name="+g_name);
它显示以下错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where g_id=5 set g_name=Chikoo' at line 1
我认为它是因为实际传递给SQL Server的是: “更新ShopSystem.Grocery,其中g_id = 5 set g_name = Chikoo;
g_name实际上是一种String类型。我应该如何在java print语句中将其作为字符串传递?或者我的语法中还有其他错误吗?
答案 0 :(得分:2)
您需要在查询中的文本值周围提供引号,如下所示:
"update ShopSystem.Grocery set g_name='"+g_name +"' where g_id="+g_id+";
但是,我强烈建议您使用参数化查询/预处理语句而不是连接。
PreparedStatement stmtUpdate = null;
String strUpdate = "update ShopSystem.Grocery set g_name= ? where g_id = ?";
stmtUpdate = yourconnection.prepareStatement(strUpdate);
stmtUpdate.setString(1,g_name);
stmtUpdate.setInt(2,g_id);
stmtUpdate.executeUpdate();
请注意,上面的代码不包含异常处理和处理资源,但它应该让您入门。
答案 1 :(得分:1)
我认为g_name是一个varchar类型,所以你应该用引号('')来表示它,就像这样
int check1 = stmt3.executeUpdate("update ShopSystem.Grocery set g_name='"+g_name+"' where g_id="+g_id );
答案 2 :(得分:0)
正如shree.pat18所说,我建议你使用参数化查询/预备语句:
无论如何,您可以使用简单的引号:
"simple quote here -> ' text ' <-"
或双引号:
"double quote here -> \" text \" <-"