如何更新整个选定的同一列?
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,使用选定的文档值使用单个操作更新同一文档中的字段