如何更新整个选定的同一列?

Posted

技术标签:

【中文标题】如何更新整个选定的同一列?【英文标题】:How to update an entire selected same column? 【发布时间】:2015-03-06 16:57:09 【问题描述】:

我想用另一个值更新整个选定的同一列...

这是我尝试过的代码,显然它不起作用(错误是数据库中没有变化)

 OleDbConnection con = new OleDbConnection();
        con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Rock.accdb";
        OleDbCommand cmd = new OleDbCommand();
        cmd.Connection = con;
        con.Open();
        cmd.CommandText = "UPDATE profile SET [year]=@1 WHERE [year]=@2";
        cmd.Parameters.AddWithValue("@1", comboBox1.Text);
        cmd.Parameters.AddWithValue("@2", comboBox2.Text);
        cmd.ExecuteNonQuery();
        con.Close();
        label4.Text = "Updated successfully";
        label4.ForeColor = Color.Green;

请尊重,如果你们有任何疑问,请发表评论......

【问题讨论】:

我猜你的connection string 不合适。在配置文件中检查,您的UPDATE 查询似乎不正确 您可能应该将您的问题标记为“ole”,并删除 Visual Studio 标记 - 您的问题可能与 Visual Studio 无关。 好的,我会这样做...但是@NadeemKhan 你误会了...一切都很完美...除了查询...如果你们对此有任何想法,那就是可观的...... 此问题类似,可能包含您正在寻找的答案:***.com/questions/1216271/… "OLE DB .NET 提供程序不支持将参数传递给 SQL 语句或由CommandType 设置为 Text 时的 OleDbCommand。在这种情况下,必须使用问号 (?) 占位符。" 我没有在这里指定任何人,但是你们明白我的问题吗?我想更新具有相同名称的列本身......那么这种方法有什么替代方法吗? 【参考方案1】:

尝试:

cmd.CommandText = "UPDATE profile SET [year]=? WHERE [year]=?"

和更新参数(参数必须在查询中按'?'的顺序添加)

cmd.Parameters.AddWithValue("?", comboBox1.Text);
cmd.Parameters.AddWithValue("?", comboBox2.Text);

【讨论】:

这是我得到的错误“OleDbParameterCollection 只接受非空 OleDbParameter 类型的对象,而不是字符串对象。” 我更新了答案,尝试使用 AddWithValue 并使用“?”作为参数名称

以上是关于如何更新整个选定的同一列?的主要内容,如果未能解决你的问题,请参考以下文章

如何在单个语句中更新整个列

根据另一个选定的行和列部分更新数据框

Mongodb,使用选定的文档值使用单个操作更新同一文档中的字段

Python - 对单个元素的更新会影响同一列中的所有元素[重复]

如何从同一列同时更新母马行?

如何使用同一表中的列进行更新(ORACLE)