如何在c#中的参数中指定单元格

时间:2016-06-22 14:17:50

标签: c# database datagridview parameters

我试图找到一种在参数中指定单元格的方法。我想添加" X"从dataGridView中我的数据库中的文本,我使用以下代码。这段代码中的问题是它添加了" X"对于整个专栏,我想知道是否有一种方法可以在参数中选择一个单元格,因为我想添加" X"某个细胞。

    private void table1Button_Click(object sender, EventArgs e)
    {
        string constring = "Data Source = localhost; port = 3306; username = root; password = 0159";
        string Query1 = @"Insert into TopShineDB.Table1 (Timee, CarColorNumber, Interior, Exterior) values(@Timee, @CarColorNumber, @Interior, @Exterior)";
        using (MySqlConnection conn1 = new MySqlConnection(constring))
        using (MySqlCommand command = new MySqlCommand(Query1, conn1))
        {
            conn1.Open();

            command.Parameters.Add("@Timee", MySqlDbType.VarChar);
            command.Parameters.Add("@CarColorNumber", MySqlDbType.VarChar);
            command.Parameters.Add("@Interior", MySqlDbType.VarChar);
            command.Parameters.Add("@Exterior", MySqlDbType.VarChar);

            try
            {

                foreach (DataGridViewRow dr in dataGridView1.Rows)
                {
                    command.Parameters["@Timee"].Value = dr.Cells[0].Value;
                    command.Parameters["@CarColorNumber"].Value = dr.Cells[1].Value;
                    if (dataGridView1.CurrentCell.Style.BackColor == Color.GreenYellow)
                    {
                        command.Parameters["@Interior"].Value = dr.Cells[2].Value + " X";
                    }
                    if (dataGridView1.CurrentCell.Style.BackColor == Color.GreenYellow)
                    {
                        command.Parameters["@Exterior"].Value = dr.Cells[3].Value + " X";
                    }

                    command.ExecuteNonQuery();
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
    }

感谢

1 个答案:

答案 0 :(得分:1)

首先作为任何编程语言的常见做法我会改变:

if (dataGridView1.CurrentCell.Style.BackColor == Color.GreenYellow)
{
    command.Parameters["@Interior"].Value = dr.Cells[2].Value + " X";
}
if (dataGridView1.CurrentCell.Style.BackColor == Color.GreenYellow)
{
    command.Parameters["@Exterior"].Value = dr.Cells[3].Value + " X";
}

为:

if (dataGridView1.CurrentCell.Style.BackColor == Color.GreenYellow)
{
    command.Parameters["@Interior"].Value = dr.Cells[2].Value + " X";
    command.Parameters["@Exterior"].Value = dr.Cells[3].Value + " X";
}

因为两个if语句是等价的。另外,你究竟在使用单元格的BackColor?就个人而言,如果我想在单元格(2,3)中添加一个X,我会这样做:

command.Parameters["@Interior"].Value = this.dataGridView1[2,3].Value + " X";
command.Parameters["@Exterior"].Value = this.dataGridView1[2,3].Value + " X";

而不是遍历每一行并执行多个条件语句。

请告诉我这是否能达到你想要的效果,否则我可以为你更新。

祝你好运!