c# - 如何使用计时器从 Mysql 数据库中检索数据?
问题描述
我需要使用计时器从 xamarin android 中的 Mysql 数据库中检索数据。定时器的时间间隔为 1 秒。数据库使用名为“id”的自动增量列进行索引。我试图获取数据库中的最后一行数据。最后一行我需要获取3列的值。每列都是一个 int 类型。
但是我收到以下异常:
No current query in data reader
使用以下代码:
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
parts = FindViewById<TextView>(Resource.Id.partslabel);
Timer timer1 = new Timer();
timer1.Interval = 2000;
timer1.Elapsed += Timer1_Elapsed;
timer1.Start();
}
private void Timer1_Elapsed(object sender, ElapsedEventArgs e)
{
retrievefromdb();
}
public void retrievefromdb()
{
string query = "SELECT * FROM table ORDER BY id DESC LIMIT 1";
MySqlConnection connection = new MySqlConnection("Server=192.168.15.88; Port=3306; database=database01;uid=user;pwd=userpass;");
try
{
if (connection.State == ConnectionState.Closed)
{
MySqlCommand cmd = new MySqlCommand(query, connection);
connection.Open();
using (MySqlDataReader myReader = cmd.ExecuteReader())
{
while (myReader.Read())
{
RunOnUiThread(() =>
{
parts.Text = myReader["parts"].ToString();
});
}
}
connection.Close();
}
}
catch (MySqlException ex)
{
RunOnUiThread(() =>
{
syslog.Text = ex.ToString();
});
}
}
}
}
异常被抛出:
parts.Text = myReader["parts"].ToString();
如果我尝试使用按钮而不是计时器运行代码。它完美地工作。
我认为失败是因为数据读取器的功能没有被释放,但是在将函数放在 using 块中之后它继续失败。
如何使用计时器从 Mysql 数据库中检索数据?也许我所遵循的路径不是合适的或最简单的。
解决方案
推荐阅读
- batch-file - 通过批处理文件 (.bat) 编译 Inno Setup 项目
- javascript - Javascript提示保存到c#中的变量,单击相同的按钮
- php - 我的 wordpress 简码不起作用并输出“未知”
- sorting - Woocommerce / 按价格对相关产品进行排序
- python - 当我尝试浏览 .xslx 文件时,会打开一个新的 Excel 文档
- c# - 如何从一个txt文件制作一个水果数组,每个水果在C#中有四个属性
- c# - 如何将图像插入 SQL Server?
- php - 如何在 PhpStorm 包含路径中包含部分 PHAR
- php - 从两个数组创建单个变量
- r - r tensorflow ValueError:列 dtype 和 SparseTensors dtype 必须兼容