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

C# 如何更新整个选定的同一列?,c#,oledb,C#,Oledb,我想用另一个值更新整个选定的同一列 这是一个我试过的代码,显然它不起作用,错误是DB没有变化 OleDbConnection con = new OleDbConnection(); con.ConnectionString = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Rock.accdb"; OleDbCommand cmd = new OleDbCommand(); cmd.Con

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

这是一个我试过的代码,显然它不起作用,错误是DB没有变化

 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;
请尊重他人,如果你们有任何疑问,请发表评论…

试试:

cmd.CommandText = "UPDATE profile SET [year]=? WHERE [year]=?"
和更新参数必须按查询中“?”的顺序添加参数

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

我猜你的连接字符串不正确。在配置文件中检查它,您的更新查询似乎不正确您可能应该标记问题ole,并删除Visual Studio标记-您的问题可能与Visual Studio无关。好的,我会这样做。。。但是@NadeemKhan你搞错我了。。。一切都很完美。。。除了查询。。。如果你们对此有任何想法,那么这将是值得注意的…这个问题类似,并且可能包含您正在寻找的答案:当CommandType设置为Text时,OLE DB.NET提供程序不支持将参数传递给SQL语句或OleDbCommand调用的存储过程的命名参数。在这种情况下,必须使用问号占位符。我这里没有指定任何人,但你们明白我的问题吗?我想用相同的名称更新列本身。。。那么这个方法还有其他选择吗?这是一个错误,我得到OleDbParameterCollection只接受非空的OleDbParameter类型对象,而不是字符串对象。我更新了答案,用AddWithValue试试,然后使用?作为参数名