[VB.NET] Problem mit DataSet und auslesen von Daten

BeLoW_ZeRo

Grünschnabel
Hallo,

ich habe mit Visual Studio 2005 ein neues Projekt erstellt. Diesem Projekt habe ich per "Datenquelle hinzufügen" eine Datenbankverbindung zu einem SQL Server hinzugefügt. (Es wird eine Tabelle der Datenbank angezeigt)

In der Datenquellenansicht habe ich jetzt unterhalb des TableAdapters noch eine SQL Abfrage eingebaut. Diese hat als executeMode = Scalar. D.h. ja so wie ich es verstanden habe, dass es nur den ersten Datensatz ausgibt. Funktioniert soweit auch. Aber wie mache ich es denn, wenn ich alle, oder vor allem nur bestimmte Datensätze ausgeben will?

Mein Code bisher:

Code:
Private Sub abfrage_ausfuehren()
        Dim personalnummer = 1141
        Dim test As New CMSDataSetTableAdapters.T_PRECORDTableAdapter
        MsgBox(test.abfrageField2)
End Sub

Ich würde eben jetzt gerne nur die Zeile ausgeben, die in der Spalte "nr" der "personalnummer" entspricht.

Wie der SQL-befehl aussehen würde ist ja klar. Wie ich diesen vom Code aus auf meine Tabelle anwenden kann jedoch nicht.

Bitte nicht schlagen ^^
 
Ich habs jetzt erstmal so gelöst, dass meine Funktion die Datenbank von oben bis unten durchsucht, bis die nr übereinstimmt. Bei einer großen Tabelle dauert das aber leider sehr lange. Daher würd ich mir von Anfang an gerne nur den einen entsprechenden Datensatz holen.

Code:
Private Sub abfrage_ausfuehren(ByVal personalnummer As Integer)
        Dim test As New CMSDataSet
        Dim tabelle As New CMSDataSetTableAdapters.T_PRECORDTableAdapter
        Dim anzahl_reihen = tabelle.GetData.Rows.Count
        'Bestimmten Datensatz ausgeben
        Dim i = 0
        Dim erfolg As Boolean
        erfolg = False
        Do

            Dim aktuelleNummer = tabelle.GetData().Rows(i).Item("PR_ID")
            If aktuelleNummer = personalnummer Then
                TextBox1.Text = "Benutzer: " + tabelle.GetData().Rows(i).Item("PR_FIELD1") + " erhält Zugang"
                'MsgBox("Benutzer: " + tabelle.GetData().Rows(i).Item("PR_FIELD1") + "erhält Zugang")
                erfolg = True
            End If
            i = i + 1


        Loop Until erfolg = True
    End Sub
 
PHP:
                     service.conn.Open()
            Dim cmd As New OleDbCommand
            cmd.Connection = service.conn
            cmd.Parameters.Add("?", PW)
            cmd.CommandText = "UPDATE Benutzer Set password=? WHERE user_name LIKE '" & tb_user_for.Text.ToLower() & "'"
            cmd.ExecuteNonQuery()
            OleDA_User.UpdateCommand = cmd
service.conn.close()
PHP:
        sql = New OleDbCommand("SELECT * FROM Benutzer WHERE Benutzer=' " & tb_user_for.Text &" ' ", service.conn)
        sql.CommandTimeout = 30
        OleDA_User.SelectCommand = sql
        OleDA_User.Fill(Ds_service1, "Benutzer")

Das sind Codeschnipsel aus meiner webapplikation, so update ich ein datensatz in der DB und im zweiten teil lade ich die DB tabelle in ein DataSet.


ka evtl kannst du damit was anfangen :)
 
Entweder mit Parameter oder ohne eine Mischung ist sinnlos.
Visual Basic:
cmd.Parameters.Add("?password", PW)
cmd.Parameters.Add("?username", tb_user_for.Text.ToLower() & "*") 
            cmd.CommandText = "UPDATE Benutzer Set password=?password WHERE user_name LIKE ?username"
Ein Like ohne den Wildkart * ist unnötigt, da man so sonst auf gleichheit testet. Da ist dann ein Vergleich angebracht.
Ausserdem solltest du auch noch den Datentyp bei den Parameter mit angeben.
 
Hi,

schonmal danke an euch. Aber wo habt ihr denn in eurer Lösung was mit Datasets gemacht?

Gruß below
 
Zuletzt bearbeitet:
Zurück