C#MySQL读者不读

时间:2018-03-15 20:28:34

标签: c# mysql sqldatareader

我有一个从指定列读取值的函数。它看起来像这样:

        private bool OpenConnection() // Just opens the connection. No error here.
        {
            try
            {
                conn.Open();
                return true;
            }
            catch (MySqlException ex)
            {
                MessageBox.Show("Connection not opened");
                return false;
            }
        }
    private void getStats(string user, string cate, string score)
    {
        if (OpenConnection())
        {
            try
            {
                string getuserstats = $"SELECT {cate} FROM scores WHERE user = '{user}'";
                MySqlCommand cmd = new MySqlCommand(getuserstats, conn);
                MySqlDataReader getscore = cmd.ExecuteReader();
                MessageBox.Show(getscore.Read().ToString()); //outputs false.
                while(getscore.Read())//does not run
                {
                    MessageBox.Show("Reading!");//does not run
                    score = getscore.GetString(0);//does not run
                    MessageBox.Show(score); //does not run
                }
                getscore.Close();
                conn.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show("Error getting scores!");
                conn.Close();
            }
        }
        else
        {
            MessageBox.Show("Connection not opened!");
        }
    }

SQL命令部分似乎运行正常,我用一些不同的查询测试它们并且它们都运行良好。

然而,SQL阅读器本身似乎并没有运行。我也没有出现异常错误。

我使用了一个消息框来显示我读者阅读的布尔值,并输出了false。这是为什么?

1 个答案:

答案 0 :(得分:1)

Read()返回false的最可能原因是没有记录与您正在执行的查询匹配。您确定该表中是否有与给定用户名匹配的记录?您连接的数据库是您认为它连接的数据库。

这不相关,但MySqlCommand和MySqlDataReader都是一次性的,连接也是如此,所以你应该把它们放在"使用"阻止,或明确处置它们。