首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java和MYSQL语法问题

问Java和MYSQL语法问题
EN

Stack Overflow用户
提问于 2013-05-01 23:12:53
回答 4查看 122关注 0票数 1

我正在尝试将数据插入到MYSQL数据库中。我想在数据库中插入一个int,这样做没有问题。但是,我想插入到(值) WHERE中。当我尝试这样做时,我得到了一个MYSQL语法错误。

我可以插入和选择WHERE,只要它们在两个单独的语句中。下面是我的代码:

代码语言:javascript
复制
    String query = ("INSERT INTO `accounts` (inventory) " + "VALUES ('"
            + Inventory.inventory + "') WHERE username='" + Frame.username
            + "' and password = '" + Frame.password + "'");
EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-05-01 23:14:44

基本上,INSERT语句不能有WHERE子句。我在想你想要UPDATE一个特定的记录,例如

代码语言:javascript
复制
UPDATE accounts
SET inventory = 'valueHere'
WHERE userName = 'userHEre' AND password = 'passHere'

只有在从INSERT语句的结果中插入记录时,SELECT语句才能有WHERE子句,例如

代码语言:javascript
复制
INSERT INTO tableName (col1, ..., colN)
SELECT col1, ..., colN
FROM table2
// WHERE ..your conditions here..

顺便说一句,您当前的编码风格容易受到SQL Injection的攻击。考虑使用PreparedStatement。

PreparedStatement的基本示例

代码语言:javascript
复制
String updateString = "UPDATE accounts SET inventory = ? WHERE userName = ? AND password = ?";
PreparedStatement updateStmt = con.prepareStatement(updateString);
updateStmt.setString(1, Inventory.inventory);
updateStmt.setString(2, Frame.username);
updateStmt.setString(3, Frame.password);
updateStmt.executeUpdate();

票数 5
EN

Stack Overflow用户

发布于 2013-05-01 23:15:34

MySQL插入语法不支持WHERE子句,这就是出现语法问题的原因。也许你正在寻找更新:

代码语言:javascript
复制
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
    SET col_name1=expr1 [, col_name2=expr2 ...]
    [WHERE where_definition]
    [ORDER BY ...]
    [LIMIT row_count]
票数 2
EN

Stack Overflow用户

发布于 2013-05-01 23:18:39

不是直接的答案,但更多的是一种最佳实践....

您应该避免对任何sql执行这种类型的字符串连接。你容易受到sql injection的攻击,而且它不能很好地扩展。相反,您应该考虑使用JdbcTemplates或使用开源spring framework的NamedJdbcTemplate。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16320848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档