C # MySQLDataReader возвращает одну и ту же строку для всех строк - PullRequest
0 голосов
/ 24 февраля 2019

Я пытаюсь извлечь значения из таблицы, и MySQLDataReader, похоже, не хочет сотрудничать со мной.

conn = new MySqlConnection(Credentials);
conn.Open();
MySqlCommand cmd = new MySqlCommand(), cmd2 = new MySqlCommand();
cmd.Connection = conn;
cmd2.Connection = conn;
cmd.CommandText = "SELECT * FROM test";
cmd2.CommandText = "INSERT INTO test (test) VALUES (1),(2),(3),(4),(5),(6),(8);";
cmd2.ExecuteNonQuery();

MySqlDataReader reader = cmd.ExecuteReader();

while (reader.Read())
{
    Console.WriteLine(reader.ToString());
}
conn.Close();

INSERT работает как надо, как и таблицазаполняется числами 1-8 после проверки таблицы, но это:

while (reader.Read())
{
    Console.WriteLine(reader.ToString());
}

возвращает это в консоли

MySql.Data.MySqlClient.MySqlDataReader
MySql.Data.MySqlClient.MySqlDataReader
MySql.Data.MySqlClient.MySqlDataReader
MySql.Data.MySqlClient.MySqlDataReader
MySql.Data.MySqlClient.MySqlDataReader
MySql.Data.MySqlClient.MySqlDataReader
MySql.Data.MySqlClient.MySqlDataReader
MySql.Data.MySqlClient.MySqlDataReader

1 Ответ

0 голосов
/ 24 февраля 2019

Вам необходимо получить доступ к столбцам SqlDataReader.Вы можете прочитать Получить данные, используя DataReader .Текущий код просто вызывает ToString() в считывателе, который просто возвращает его тип.

Вы можете извлечь данные следующим образом:

reader.GetString(0)     // get a string in the first column
reader.GetInt32(1)      // get an integer in the second column
reader.GetValue(2)      // get an object in the third column
reader.GetDateTime(3)   // get a datetime   
reader.GetDouble(4)     // get a double

// or by index/indexing
reader["ColumnName"].ToString()  // get value by column name
reader[0].ToString()             // get value by index

Таким образом, ваш код станет:

while (reader.Read())
{
    // get the value from the first column
    Console.WriteLine(reader.GetInt32(0));    
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...