如何使用计时器从mysql数据库检索数据?

unhi4e5o  于 2021-06-15  发布在  Mysql
关注(0)|答案(0)|浏览(282)

我需要使用计时器从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数据库检索数据?也许我所遵循的道路并不合适或最简单。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题