当我再次使用MySqlReader时,我得到错误:MySql.Data.MySqlClient.MySqlException:“调用Read()之前访问字段的尝试无效”

6l7fqoea  于 2023-04-10  发布在  Mysql
关注(0)|答案(1)|浏览(198)

我想获取关于任何帐户的数据,但我再做一次,我得到一个错误,好像阅读器没有被再次创建,但旧的正在使用。

public static Account getAccount(string login)
        {
            using (MySqlConnection connection = new MySqlConnection(CONNECT_STR_ACCOUNTS))
            {
                connection.Open();
                MySqlCommand cmd = connection.CreateCommand();
                cmd.CommandText = "SELECT * FROM accounts WHERE " + COLUMN_LOGIN + "='" + login + "'";
                MySqlDataReader reader = cmd.ExecuteReader();

                Account account = null;

                reader.Read(); //Error is hear

                account = new Account(

                                reader[NUM_COL_FIRST_NAME].ToString(),
                                reader[NUM_COL_LAST_NAME].ToString(),
                                reader[NUM_COL_LOGIN].ToString(),
                                reader[NUM_COL_PASSWORD].ToString(),
                                Convert.ToInt32(reader[NUM_COL_LEVEL_ACCSES].ToString()),
                                reader[NUM_COLUMN_BIRHTDAY].ToString()

                );
                
                reader.Close();
                connection.Close();
                return account;
            }
        }
enyaitl3

enyaitl31#

我认为您需要利用using概念我也有点困惑为什么在大多数数据库工作中使用登录值信息有一个公告整数值这里是一些示例代码我使用注意newData是和整数

public void readUDV()
    {
        using (SQLiteConnection conn = new SQLiteConnection($"Data Source = '{dbName}';Version=3;"))
        {
            conn.Open();
            using (SQLiteCommand cmd = new SQLiteCommand($"SELECT * FROM FriendsData WHERE FID = " + newData, conn))
            {
                using (var rdr = cmd.ExecuteReader())
                {
                    while (rdr.Read())
                    {
                        fn = rdr["fxFirstName"].ToString().Trim();
                        ln = rdr["fxLastName"].ToString().Trim();
                        ad = rdr["fxAddress"].ToString().Trim();
                        ct = rdr["fxCity"].ToString().Trim();
                        st = rdr["fxState"].ToString().Trim();
                        zp = rdr["fxZip"].ToString().Trim();
                        ph = rdr["fxCellPhone"].ToString().Trim();
                        em = rdr["fxEmail"].ToString().Trim();
                        rt = rdr["fxInfo"].ToString().Trim();
                    }
                }
            }
        }
    }

相关问题