首页 > 解决方案 > 如何使用计时器从 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 数据库中检索数据?也许我所遵循的路径不是合适的或最简单的。

标签: c#mysqlxamarin.android

解决方案


推荐阅读