首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL Insert语句中的where条件

问MySQL Insert语句中的where条件
EN

Stack Overflow用户
提问于 2012-10-08 16:10:51
回答 6查看 1.1K关注 0票数 0

我可以在Insert语句中使用where条件吗?我编写了这样的代码,它向我显示了一个错误,调用MySQLException是未处理的,你的SQL语法中有一个错误;请查看与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在第1行使用'WHERE RegistrationID=‘3’。我的代码:-

代码语言:javascript
复制
MySqlCommand cmd1 = new MySqlCommand("INSERT INTO registration(DueAmount) VALUES ('"+textBox5.Text + "') WHERE RegistrationID='"+textBox2.Text+"'",connection);
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-10-08 16:32:28

你混合了两个不同的语句。

  • UPDATE语句更新表中的现有行。
  • INSERT语句在表中添加新行。

我认为您希望使用UPDATE语句并修改现有行。

代码语言:javascript
复制
MySqlCommand cmd1 = new MySqlCommand("
UPDATE Registration Set DueAmount= '"+textBox5.Text 
+ "' WHERE RegistrationID='"+textBox2.Text+"'",connection);
票数 1
EN

Stack Overflow用户

发布于 2012-10-08 16:13:13

INSERT的正确语法没有WHERE子句。我觉得你想要的是UPDATE而不是INSERT

代码语言:javascript
复制
UPDATE registration 
SET DueAmount = 'txt5'
WHERE RegistrationID = 'txt2'

在SELECT中使用WHERE的唯一方法是使用INSERT INTO....SELECT语句。

还有一件事,由于您使用的是ADO.NET,请确保您的查询已参数化以避免SQL Injection,并使用USING语句。

代码语言:javascript
复制
string query = "UPDATE  registration 
                SET     DueAmount = @dateAmount
                WHERE   RegistrationID = @RegID"
using (MySqlCommand cmd1 = new MySqlCommand(query,connection))
{
    cmd1.CommandType = CommandType.Text;
    cmd.Parameters.AddWithValue("@dateAmount", textBox5.Text);
    cmd.Parameters.AddWithValue("@RegID", textBox2.Text);

    // other codes
}
票数 1
EN

Stack Overflow用户

发布于 2012-10-08 16:12:59

使用WHERE的INSERT没有任何意义。INSERT总是插入一个新行。您可能正在寻找REPLACE INTO,如果该记录不存在,它将执行insert;如果该记录存在,它将根据其主键执行update。

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

https://stackoverflow.com/questions/12777656

复制
相关文章

相似问题

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