我正在用C#编写这个应用程序。当我打开包含位值的SQL表的编辑表单时,我需要发送一个值。值1表示打开,值0表示关闭。当我打开此记录的编辑表单时,我需要传递1,并在离开表单时将0放在那里。我怎么能这样做?
答案 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,如果你遇到困难,请随时回来寻求帮助。