在表单加载时更改参数并关闭

时间:2014-10-20 12:54:38

标签: c# sql winforms

我正在用C#编写这个应用程序。当我打开包含位值的SQL表的编辑表单时,我需要发送一个值。值1表示打开,值0表示关闭。当我打开此记录的编辑表单时,我需要传递1,并在离开表单时将0放在那里。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您可以在“加载和已关闭”事件处理程序中处理此问题。

当你打开时,你可以拥有:

public myForm_Load(object sender, EventArgs e)
{
    // Call function to do bit set, or set it here.
    setBit(1, rowNumber);
}

然后关闭几乎完全相同:

public myForm_Closed(object sender, EventArgs e)
{
    setBit(0, rowNumber);
}

希望这有帮助。

编辑我有点假设您的问题是何时何地来设置此位,而不是如何。如果您在编写查询以设置此位时遇到问题,请告诉我。但它的功能看起来像这样:

private setBit(int open, int rowID)
{
    using(MySqlConnection conn = new MySqlConnection(cs)) // Assuming you've already built the connection string.
    {
        conn.Open();
        using(MySqlCommand cmd = new MySqlCommand())
        {
            cmd.Connection = conn;
            cmd.CommandText = "UPDATE tableName SET columnName = @open WHERE rowID = @id";
            cmd.Parameters.AddWithValue("@open", open);
            cmd.Parameters.AddWithValue("@id", rowID);
            cmd.ExecuteNonQuery();
        }
        conn.Close();
    }
}

当然,好的做法是将它放在Try / Catch块中,但我只是想覆盖它,以防这也给你带来麻烦。

编辑2 我编辑了上面的代码。请注意,您将更改特定行的打开/关闭值(至少是问题的显示方式),因此您需要找到获取该行ID并将其传递到setBit的方法函数,因为您需要在SQL语句的WHERE子句中更新正确的行。我会挑战自己弄清楚如何获得行ID,如果你遇到困难,请随时回来寻求帮助。