我需要使用计时器从xamarin android中的mysql数据库检索数据。计时器的间隔为1s。数据库使用名为“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数据库检索数据?也许我所遵循的道路并不合适或最简单。
暂无答案!
目前还没有任何答案,快来回答吧!