[visual-studio]发行与更新功能的 Windows 窗体

发布时间: 2014/3/1 5:55:26
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

这是我的代码:

private void button3_Click(object sender, EventArgs e)
    {
        int i;
        i = dataGridView1.SelectedCells[0].RowIndex;
        textBox1.Text = dataGridView1.Rows[i].Cells[0].Value.ToString();
        textBox2.Text = dataGridView1.Rows[i].Cells[1].Value.ToString();
        textBox3.Text = dataGridView1.Rows[i].Cells[2].Value.ToString();
    }

    private void button2_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Dido\documents\visual studio 2012\Projects\CourseProjectCars\CourseProjectCars\DataCars.mdf;Integrated Security=True;Connect Timeout=30");
        con.Open();
        SqlCommand cmd = new SqlCommand("Update SuperCars set Car=@Car,mph=@mph,price=@price Where(Car=@Car)", con);
        cmd.Parameters.AddWithValue("@Car", textBox1.Text);
        cmd.Parameters.AddWithValue("@mph", textBox2.Text);
        cmd.Parameters.AddWithValue("@price", textBox3.Text);
        cmd.ExecuteNonQuery();
        MessageBox.Show("updated......");
        con.Close();
        Bind();
        Clear();
    }
}

当我单击 button3 上的信息在我所选行中 th DataGridView1 插入到文本框,所以我可以更改,用 button4 更新它们。我的问题是当我尝试更新中 textBox1 的东西时,更新并不工作为 textBox1,既为 textBox2 和 3。但当我正在更新中文本框 2 或 3 的信息,它的工作。

解决方法 1:

问题是列 '车' 是您的密钥,但也可编辑。因此,当您更改中 Textbox1 的文本时你也会更改您的密钥。

所以当您更改中从"Car1"到"Car2"TextBox1 的文本时 SQL 命令将查找"Car2"要更新的行。如果这条线不存在更新命令没有任何效果。如果这条线已经存在错误行被更新。

您已将选定的密钥存储在成员变量中,并在您的更新命令中使用它:

private string carKey;  // member variable to store the key

private void button3_Click(object sender, EventArgs e)
{
    int i;
    i = dataGridView1.SelectedCells[0].RowIndex;
    textBox1.Text = dataGridView1.Rows[i].Cells[0].Value.ToString();
    textBox2.Text = dataGridView1.Rows[i].Cells[1].Value.ToString();
    textBox3.Text = dataGridView1.Rows[i].Cells[2].Value.ToString();

    carKey = textBox1.Text;  // store the key of the selected car
}

private void button2_Click(object sender, EventArgs e)
{
    SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\Dido\documents\visual studio 2012\Projects\CourseProjectCars\CourseProjectCars\DataCars.mdf;Integrated Security=True;Connect Timeout=30");
    con.Open();
    SqlCommand cmd = new SqlCommand("Update SuperCars set Car=@Car,mph=@mph,price=@price Where(Car=@CarKey)", con);
    cmd.Parameters.AddWithValue("@Car", textBox1.Text);
    cmd.Parameters.AddWithValue("@mph", textBox2.Text);
    cmd.Parameters.AddWithValue("@price", textBox3.Text);
    cmd.Parameters.AddWithValue("@CarKey", carKey);  // use the stored car key
    cmd.ExecuteNonQuery();
    MessageBox.Show("updated......");
    con.Close();
    Bind();
    Clear();
}

如果你已经有的唯一键的车进入你可以存储和使用此车名称,以避免出现问题。

赞助商