Wählen Sie die Daten aus MS SQL Server 2005
Ich habe eine Tabelle mit dem Namen t_Student
in Microsoft SQL Server 2005-Datenbank. In dieser Tabelle gibt es drei Spalten mit der Bezeichnung student_regiNo
, student_Name
, student_Email
.
Ich bin mit dem folgenden code-segment zum abrufen von "student_Name". Aber anstatt zu zeigen, "student_Name" es zeigt "System.Daten.SqlClient.SqlDataReader". Was ist das problem?
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;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwenden
soweit Sie die Rückkehr "die erste Spalte der ersten Zeile in der Ergebnismenge zurückgegeben von der Abfrage" (aus MSDN)
Auch verwenden parametrisierten Abfrage:
ExecuteReader
gibt eineSqlDataReader
. Sie müssen verwenden Sie dieSqlDataReader
- API zum Lesen der Daten aus. Vergessen Sie nicht, dass eine Abfrage zurückgeben kann mehrere Zeilen mit mehreren Spalten in jeder Zeile. Zum Beispiel:Beachten Sie ferner, dass, sollten Sie eine parametrisierte Abfrage verwenden anstatt die ID direkt in der SQL - ansonsten verlassen Sie sich offen für SQL-injection-Angriffe. Siehe die Dokumentation für
SqlCommand.Parameter
für weitere Informationen.Schließlich sollten Sie verwenden
using
Aussagen für dieSqlConnection
,SqlCommand
undSqlDataReader
so dass Sie entsorgen Sie Sie ordnungsgemäß. Sonst wirst du Leck-Datenbank-verbindungen.reader.ToString()
- undSqlDataReader
nicht überschreibenToString
.