Во-первых, несколько важных рекомендаций:
Не используйте SELECT *
. Вы можете вернуться к чему-то другому, чем вы думали (например, если схема базы данных была изменена тем временем). Вместо этого укажите каждый столбец, который вас интересует явно.
Вместо склеивания SQL-запроса с использованием конкатенации строк используйте запрос @parameterized
. Это хороший принцип, который следует из соображений производительности (кэширование запросов) и безопасности (предотвращение атак SQL injection).
Так что ваш код становится:
cmd.CommandText = "SELECT Player1, Player2 FROM Game WHERE gameID = @gameId";
cmd.Parameters.AddWithValue("@gameId", game_id);
Теперь на Ваш вопрос: Как получить значения Player1
и Player2
каждой записи? То есть, где IDataReader
s приходят в Считыватель данных является однонаправленный курсор над результирующей таблицы, что позволяет получить доступ к значениям каждого возвращенного запись:.
// SqlConnection connection = cmd.Connection;
connection.Open();
using (var reader = cmd.ExecuteReader(CommandBehavior.CloseConnection))
{
int player1Index = reader.GetOrdinal("Player1");
int player2Index = reader.GetOrdinal("Player2");
while (reader.Read()) // one loop iteration per record returned from SELECT
{
string player1 = cmd.GetString(player1Index);
string player2 = cmd.GetString(player2Index);
… // do something with player1, and player2
}
}
Ну какой код вы используете? Вы показали нам запрос. Отлично. Это начало. Что еще? Какой код вы используете для фактического выполнения этого в базе данных и чтения его результата? Только этого недостаточно. – Arran
это был мой вопрос. как я могу прочитать результаты в 2 переменных. –