我试图找到一种在参数中指定单元格的方法。我想添加" 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);
}
}
}
感谢
答案 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";
而不是遍历每一行并执行多个条件语句。
请告诉我这是否能达到你想要的效果,否则我可以为你更新。
祝你好运!