我正在使用一个使用Access数据库的.Net桌面应用。我正在使用“联系人”表单并尝试更改“类别”字段,该字段在组合框中有多个选项可供选择。我想要设置的值在选项列表中,但它没有做任何事情。这是我的代码。请详细说明正在发生的事情。该代码似乎适用于DELETE命令。
string list = string.Join(", ", f);
string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + txtDB.Text + "";
string ComStr = "UPDATE Contacts SET Category = ? where [E-mail Address] in (?)";
using (OleDbConnection con = new OleDbConnection(ConnStr))
{
con.Open();
using (OleDbCommand com = new OleDbCommand(ComStr, con))
{
com.Parameters.AddWithValue("List", list);
com.Parameters.AddWithValue("Category", "Не получава мейли");
com.ExecuteNonQuery();
}
con.Close();
}
答案 0 :(得分:0)
我认为这应该有效: -
string ComStr = "UPDATE Contacts SET Category = @Category where [E-mail Address] in @List";
using (OleDbConnection con = new OleDbConnection(ConnStr))
{
con.Open();
using (OleDbCommand com = new OleDbCommand(ComStr, con))
{
com.Parameters.AddWithValue("@Category", "Не получава мейли");
com.Parameters.AddWithValue("@List", list);
com.ExecuteNonQuery();
}
con.Close();
}
答案 1 :(得分:0)
我找到了答案。列表中的每个项目都必须在...确定我不知道这个词,但这里是我的工作代码:
string list = string.Join("', '", f);
string l = "'" + list + "'";
string ConnStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" + txtDB.Text + "";
string ComStr = "UPDATE Contacts SET Category = @Category where [E-mail Address] in (" + l + ")";
using (OleDbConnection con = new OleDbConnection(ConnStr))
{
con.Open();
using (OleDbCommand com = new OleDbCommand(ComStr, con))
{
com.Parameters.AddWithValue("Category", "Не получава мейли");
com.ExecuteNonQuery();
}
con.Close();
}
感谢您的提示和时间。