Выберите данные из MS SQL Server 2005 - PullRequest
0 голосов
/ 16 августа 2010

У меня есть таблица с именем t_Student в базе данных Microsoft SQL Server 2005.В этой таблице есть три столбца с именами student_regiNo, student_Name, student_Email.

. Я использую следующий сегмент кода для получения «student_Name»Но вместо того, чтобы показывать «student_Name», он показывает «System.Data.SqlClient.SqlDataReader».В чем проблема?

private void GetDatabaseConnection()
{
    string connectionString = @"server=RZS-F839AD139AA\SQLEXPRESS; Integrated Security = SSPI; database = StudentCourseInformation";
    connection = new SqlConnection(connectionString);
    connection.Open();
}

public string GateStudentName(string selectedStudentRegiNo)
{
    GetDatabaseConnection();

    string selectedStudentQuery = @"SELECT student_Name FROM t_Student WHERE (
                                  student_regiNo = 
                                  '" +selectedStudentRegiNo+ @"'  
                                   )";
    SqlCommand command = new SqlCommand(selectedStudentQuery, connection);
    SqlDataReader reader = command.ExecuteReader();

    string selectedStudentName = Convert.ToString(reader);
    return selectedStudentName;
}

Ответы [ 4 ]

4 голосов
/ 16 августа 2010

Используйте

return (string)command.ExecuteScalar();

, поскольку вам нужно вернуть «первый столбец первой строки в наборе результатов, возвращенных запросом» (из MSDN )

Также используйте параметризованный запрос:

var command = new connection.CreateCommand()
command.CommandText = "SELECT student_Name FROM t_Student WHERE student_regiNo = @number";
command.Parameters.AddWithValue(@number, selectedStudentRegiNo);
3 голосов
/ 16 августа 2010

ExecuteReader возвращает SqlDataReader.Вам нужно использовать SqlDataReader API для чтения данных из него.Не забывайте, что запрос может возвращать несколько строк с несколькими столбцами в каждой строке.Например:

while (reader.Read())
{
    string name = reader.GetString(0);
    Console.WriteLine("Read name: {0}", name);
}

Также обратите внимание, что вы должны использовать параметризованный запрос, а не включать идентификатор непосредственно в SQL-запрос, иначе вы оставите себя открытым для атак с использованием SQL-инъекций.См. Документы для SqlCommand.Parameters для получения дополнительной информации.

Наконец, вы должны использовать using операторы для SqlConnection, SqlCommand и SqlDataReader, чтобы вы могли распоряжатьсяих соответственно.В противном случае вы потеряете соединения с базой данных.

1 голос
/ 16 августа 2010
if (reader.Read())
{
     string selectedStudentName = reader.GetString(0);
}
0 голосов
/ 26 сентября 2012
SqlCommand command = new SqlCommand(selectedStudentQuery, connection);
SqlDataReader reader = command.ExecuteReader();

if(reader.Read())
{
    return reader["student_Name"];
}
return "not exist";
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...