3 Stimmen

SQL select Rückgabewert in Variable

Arbeiten mit: ASP.net mit VB.net und Verbindung zu MS SQL Server

Was ich versuche zu tun ist, nehmen das Ergebnis einer SQL Select-Abfrage und Platz, die in eine String-Variable, so dass es in Dinge wie ein Textfeld oder Label verwendet werden kann. Code so weit, dass nicht funktioniert...

Imports System.Data.SqlClient

Partielle Klasse dev_Default Erbt System.Web.UI.Page

Protected Sub form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles form1.Load

    Dim cnPodaci As New SqlConnection
    cnPodaci.ConnectionString = "Data Source=<server>;Initial Catalog=<DB>;User ID=<UserName>;Password=<Password>"
    cnPodaci.Open()
    Dim cm As New SqlCommand
    cm.CommandText = "SELECT * FROM tbl1"
    cm.Connection = cnPodaci
    Dim dr As SqlDataReader
    dr = cm.ExecuteReader

    TextBox1.Text = dr.GetString(0)

    cnPodaci.Close()

End Sub

Klasse beenden

4voto

Michael Arnell Punkte 1008

Obwohl Sie die Abfrage durch den Aufruf von "ExecuteReader" auf dem Befehl ausgeführt haben, ist das, was tatsächlich zurückgegeben wird, ein Objekt (ein DataReader), das es Ihnen ermöglicht, über alle Abfrageergebnisse zu iterieren. Dazu müssen Sie die "Read"-Methode für den DataReader aufrufen (dies könnte mehrmals in der Klausel einer "while"-Schleife geschehen). Wenn Sie Ihren Code wie folgt abändern, sollte das funktionieren:

If dr.Read() Then
    TextBox1.Text = dr.GetString(0)
End If

Beachten Sie jedoch, dass dies nur funktioniert, wenn das erste von Ihrer Abfrage zurückgegebene Feld eine Zeichenkette ist, da andernfalls eine Cast-Ausnahme ausgelöst werden kann.

2voto

mmx Punkte 400975

Wenn die Abfrage einen einzelnen Wert zurückgeben soll, können Sie einfach die ExecuteScalar Methode:

 TextBox1.Text = DirectCast(cm.ExecuteScalar(), String)

-2voto

Evernoob Punkte 5556

Das Problem ist, dass SELECT-Abfragen einen Datensatz oder zumindest eine Zeile aus einem Datensatz zurückgeben, nicht aber eine Zeichenfolge.

Benötigen Sie unbedingt die gesamte Ergebnismenge als Zeichenkette? Oder können Sie das, was Sie erreichen wollen, auch durch den Verweis auf einen Punkt in einem Array oder Datensatz erreichen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X