每个定时器更新Firebird数据库';s在C#中打勾
本文关键字:定时器 更新 Firebird 数据库 | 更新日期: 2023-09-27 18:28:42
我想在计时器的每一刻更新数据库中的字段:
我知道如何从数据库中读取,但我不知道如何将其发送到数据库。。我的代码:
private void Timer1_tick(object sender, EventArgs e)
{
FbConnection UpdateConnection = new FbConnection(ConnectionString);
UpdateConnection.Open();
FbCommand readCommand = new FbCommand("UPDATE Param SET Test=" + TestTextBox.Text, UpdateConnection);
FbDataReader myreader = readCommand.ExecuteReader();
UpdateConnection.Close();
}
这是更新数据库的好方法吗?我会有很多参数来更新每一个刻度(秒),所以也许还有另一种正确的方法可以做到这一点?
您可以调用.ExecuteNonQuery()方法。您可能会重构命令的名称,因为readCommand
有点令人困惑。然后,作为另一个建议,使用参数化查询,因为您显示的代码实际上受到查询注入的约束。你是火鸟,看看这个例子,它似乎正适合你的需要。对于架构部分,我不知道你必须做什么,但不要期望结果在时间上准确得多,而是期望它不那么准确,因为最短的时间是刻度。
更新查询使用的是ExecuteNonQuery而不是ExecuteReader。当您不阅读任何内容时,无需构建DataReader。
还要在连接周围放一个using
语句(以确保在出现异常时连接将关闭)
最后,(可能也是最重要的建议),始终使用参数来处理数据库。
private void Timer1_tick(object sender, EventArgs e)
{
using(FbConnection UpdateConnection = new FbConnection(ConnectionString))
{
UpdateConnection.Open();
FbCommand writeCommand = new FbCommand("UPDATE Param SET Test=@myData", UpdateConnection);
writeCommand.Parameters.AddWithValue("@myData", TextBox1.Text);
int recUpdated = writeCommand.ExecuteNonQuery();
}
}