wie bekomme ich Daten auf Textfeld aus der Datenbank
Ich habe ein Formular mit einem Kombinationsfeld und das Textfeld, und einer SQL-Datenbank
benannt balance
mit zwei Spalten; eine als customername
und die andere als obbalance
.
Ich hatte gebunden, alle Kunden-Namen in das Kombinationsfeld, was ich jetzt tun müssen, ist,
wählt ein Benutzer einen Kunden-Namen aus dem Kombinationsfeld das Textfeld sollte zeigen das obbalance der ausgewählten customername
; hier der name des Kunden wird nicht wiederholt - nur einen Namen pro Kunde.
Was kann ich tun? Bitte helfen Sie mir.
Dim conectionstring As String
conectionstring = "Data Source=.\SQLEXPRESS;AttachDbFilename=C:\Documents and Settings\Administrator\My Documents\Visual Studio 2005\Projects\SHOPPROJECT\SHOPPROJECT\shop.mdf;Integrated Security=True;User Instance=True"
Dim ST As String = ComboBox1.SelectedText
Dim sqlcon As New SqlConnection(conectionstring)
Dim sqlcmd As New SqlCommand("SELECT OBBALANCE FROM BALANCE WHERE CUSTOMERNAME = " & " '" & ST & "'" & "", sqlcon)
MessageBox.Show(TextBox1.Text)
Dim result As Object
Try
sqlcon.Open()
' Dim sdr As SqlDataReader = sqlcmd.ExecuteReader()
result = sqlcmd.ExecuteScalar()
If result IsNot Nothing Then
TextBox1.Text = result.ToString()
MessageBox.Show(TextBox1.Text)
End If
Catch ex As SqlException
MessageBox.Show(ex.Message)
End Try
End Sub
Ich hab das versucht, aber ich kann nicht sehen den Wert in das Textfeld ein, und obbalance ist ein floating-point-Wert aus der SQL-Datenbank.
- ich will Sie machen, um zu sehen, wat kann ich tun, sir
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Sie ein Update eine text-box, ist dies ein einzelnes Ergebnis (Skalar-Wert)? Wenn ja, ist die erste Sache, die ich tun würde, ist die Verwendung ExecuteScalar nicht ExecuteReader. Verwenden Sie dann den debug-Modus mit breakpoints, um eine bessere Vorstellung von dem, was tatsächlich geschieht. Es kann einfach sein, dass man nicht immer alle Ergebnisse.
Hinweis: ich gehe davon aus, dass die schlecht Codierung der Praxis (in-line-sql-Anweisung, hart-codiert connection string, etc.) sind für die Klarheit. Wenn Sie nicht sind, lösen.
Machen Sie folgende änderungen:
ComboBox1.SelectedText
gibt die markierten (selektierten) text auf derComboBoxControl
. Das wird leer sein, wenn Sie nicht verwenden Sie Ihre Maus, um wählen Sie einen Teil Ihres Textes oder halten Sie die Umschalttaste gedrückt, während Sie drücken Sie die Richtungstasten auf Ihrer Tastatur. Und das ist wahrscheinlich, warum Ihre Abfrage zu NULL DATENSÄTZE.Verwenden Sie den folgenden statt:
Einen Haltepunkt setzen und sicherzustellen, dass Sie immer den Wert für OBBALANCE (sehen Sie, wenn Sie immer alle Zeilen, die Zeit könnte gut sein). Auch, stellen Sie sicher, Sie bekommen nur eine Zeile, wie Sie die Iteration nach vorn, auch wenn Sie nur einen Wert.
Besser noch, betrachten Sie ExecuteScalar, die nur einen einzelnen Wert zurückgibt. Während Sie dabei sind, parametrieren Sie die SQL-Abfrage, so dass Sie nicht bekommen, SQL injiziert.
UPDATE: Gerade Sie hier ändern:
sdr = sqlcmd.ExecuteReader()
etwas wie
Dim s as String = sqlcmd.ExecuteScalar()
Verwenden Sie dann s, als dein textbox-Wert. Sie müssen möglicherweise ToString (), die den Wert oder sonst der cast as string, glaube ich, dass die ExecuteScalar() gibt ein Objekt zurück.