我有一个1933个用户名的列表,必须在mysql表中设置为删除(将删除的字段从0更改为1)。我在列表框中粘贴逗号分隔列表(用户名,真实姓名),并使用foreach语句将每个用户名,realname组发送到静态类中的更新命令。当我运行它时,我没有收到任何错误,但没有更新任何用户行。我做错了什么,但我不确定问题是什么。请查看下面的代码,如果您发现我没有看到的错误,请告诉我。
private void button1_Click(object sender, EventArgs e)
{
int i = 0;
try
{
if (listBox1.Items.Count > 0)
{
foreach (string s in listBox1.Items)
{
Cursor.Current = Cursors.WaitCursor;
string[] sname = s.Split(',');
Data.RemoveUser(sname[0].ToString(), sname[1].ToString());
i++;
label3.Text = i.ToString();
}
}
else
MessageBox.Show("No user names found. Please paste a list of names to be deleted.");
Cursor.Current = Cursors.Default;
MessageBox.Show(i.ToString() + " users set to deleted.");
}
catch (Exception ex)
{
throw ex;
}
}
public static void RemoveUser(string UserName, string FullName)
{
MySqlConnection conn = new MySqlConnection(constr);
try
{
conn.Open();
string qry = "Update host_user set deleted = 1 where username = @username and name = @fname";
MySqlCommand cmd = new MySqlCommand(qry, conn);
cmd.Parameters.AddWithValue("@username", UserName);
cmd.Parameters.AddWithValue("@fname", FullName);
cmd.ExecuteNonQuery();
conn.Close();
}
catch (MySqlException e)
{
if (conn != null) conn.Close();
throw e;
}
}
答案 0 :(得分:0)
当你这样做时:
string[] sname = s.Split(',');
你的名字和姓氏两边都有空格吗?如果您的输入如下:
“John,Doe”
你最终会搜索“John”& “Doe”。
如果是这种情况,请在传递这些字符串之前调用.Trim(),然后再将它们传递给RemoveUser()。