批量更新mysql表

时间:2014-06-19 19:02:30

标签: c# mysql

我有一个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;
        }
    }

1 个答案:

答案 0 :(得分:0)

当你这样做时:

string[] sname = s.Split(',');

你的名字和姓氏两边都有空格吗?如果您的输入如下:

“John,Doe”

你最终会搜索“John”& “Doe”。

如果是这种情况,请在传递这些字符串之前调用.Trim(),然后再将它们传递给RemoveUser()。