访问更新语句在 C# 中不起作用

Posted

技术标签:

【中文标题】访问更新语句在 C# 中不起作用【英文标题】:Access update statement not working in C# 【发布时间】:2016-12-20 07:33:32 【问题描述】:

我正在疯狂地试图找出以下代码不会更新我的数据库的原因。感谢您的帮助。 连接字符串是正确的,我可以执行类似的命令,只是这个由于某种原因不起作用。基本上我想要的是在我传递给该方法的列中将值“1”替换为“123”。

        public void removeExpired2(string column, string user)
    
        string connectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=d:\DB.accdb";

        using (OleDbConnection conn = new OleDbConnection(connectionString))
        
            OleDbCommand cmd = new OleDbCommand("UPDATE [Reservations] SET [" + column + "] = @Column WHERE [" + column + "] = @ID");
            cmd.CommandType = CommandType.Text;
            cmd.Connection = conn;
            cmd.Parameters.AddWithValue("@Column", "123");
            cmd.Parameters.AddWithValue("@ID", "1");
            try
            
                conn.Open();
                cmd.ExecuteNonQuery();
            
            catch (Exception ex)
            
                ScriptManager.RegisterClientScriptBlock(Button1, this.GetType(), "AlertMsg", "<script language='javascript'>alert('" + ex.Message.ToString() + "');</script>", false);
            
        
    

【问题讨论】:

但是您将 123 替换为 1 我在更改此处的值以便更容易解释时犯了这个错误,但在我的代码中问题仍然存在。除了相反的值之外,语句本身有什么问题吗? 你检查cmd.ExecuteNonQuery()的返回值了吗? 【参考方案1】:

基本上我想要的是将出现的值“1”替换为“123”

您的查询正好相反。

改一下

"UPDATE [Reservations] SET [" + column + "] = @Column WHERE [" + column + "] = @ID"

"UPDATE [Reservations] SET [" + column + "] = @ID WHERE [" + column + "] = @Column"

这样做:

cmd.Parameters.AddWithValue("@Column", "123");
cmd.Parameters.AddWithValue("@ID", "1");

【讨论】:

我在更改此处的值以便更容易解释时犯了这个错误,但在我的代码中问题仍然存在。除了相反的值之外,语句本身有什么问题吗?【参考方案2】:

该命令与其他两个命令一起执行,因此我尝试将它们分开,它似乎已经解决了问题。 我将一个命令移到它自己的方法中,剩下的两个和以前一样,现在它正在工作。谢谢大家。

【讨论】:

【参考方案3】:

简短的回答是,参数必须按照它们在 SQL 语句中出现的顺序添加到命令对象中。

【讨论】:

那不是真的...... Access 不使用命名参数,而是使用位置参数。所以在这种情况下,顺序很重要 没错,这就是我在上面的回答中提到的。我创建了一个正则表达式,它从 SQL 语句中提取命令参数并在循环中将它们添加到命令对象中。

以上是关于访问更新语句在 C# 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

WHERE 语句在应该更新数据的 SQL 中不起作用[关闭]

使用点运算符访问字典时条件语句在 Django 模板中不起作用

fillOval() 在 if 语句中不起作用[关闭]

更新语句不起作用

从父类更新日期字段在 Spring Data Jpa 中不起作用

为啥 C++ CLI 索引属性在 C# 中不起作用?