SqlDataAdapter .... gespeicherte Prozedur

11/03/2008 - 13:36 von Maik Weiß | Report spam
Hallo,

es geht um eine Aktualisierung einer DataTable zur DB, welche
nicht funktioniert.

ich bekomme über eine Funktion ein DataTable zurück, welches
an diverse Steuerelemente gebunden wird.

Dim dt As New DataTable

Friend Shared Function getCustomers() As DataTable
Using conn As New SqlConnection(connString)
conn.Open()
Dim sqlComm As SqlCommand = New
SqlCommand("spGet_Customer", conn)
sqlComm.CommandType = CommandType.StoredProcedure
sqlComm.Connection = conn
sqlComm.Parameters.AddWithValue("@custID", 100001)
reader = New SqlDataAdapter(sqlComm)
reader.Fill(dt)
End Using
End Function

beim Versuch die Daten zurück zuschreiben, wird keine Fehlermeldung
ausgegeben, aber AUCH KEINE Daten in der DB aktualisiert.

Private Sub Button1_Click(.) Handles Button1.Click
Using conn As New SqlConnection(connString)
conn.Open()
Dim sqlcmd As New SqlCommand("spGet_Customer", conn)
sqlcmd.CommandType = CommandType.StoredProcedure
sqlcmd.Connection = conn
sqlcmd.Parameters.AddWithValue("@custID", 100001)
Dim dataAdapter As New SqlDataAdapter(sqlcmd)
Dim commBuilder As SqlCommandBuilder = New
SqlCommandBuilder(dataAdapter)
dataAdapter.Update(dt)
End Using
End Sub


commBuilder.GetUpdateCommand.CommandText ergibt folgendes:
UPDATE [tblCustomers] SET [ID_cust] = @p1, [firstName] = @p2, [lastName] @p3 usw.

Anscheinend werden die Paramter nicht richtig gefüllt.

cb.GetUpdateCommand.Parameters.Item(1):
SourceColumn: "lastName"
SqlValue: Nothing !!!!
Value: Nothing !!!!

Hat jmd. ein Beispiel wie so eine zurückzuschreibende Struktur inklusive
der Gespeicherten Prozedur auszusehen hat?
Für Beispiele wàre ich sehr dankbar. Ebenfalls für Hinweise, was hier
falsch gemacht wurde.

Gruß
 

Lesen sie die antworten

#1 Peter Fleischer
11/03/2008 - 16:55 | Warnen spam
"Maik Weiß" schrieb im Newsbeitrag
news:1dcqrenbwnzd4.4umbt4zus6t$

es geht um eine Aktualisierung einer DataTable zur DB, welche
nicht funktioniert.


...
beim Versuch die Daten zurück zuschreiben, wird keine Fehlermeldung
ausgegeben, aber AUCH KEINE Daten in der DB aktualisiert.

Private Sub Button1_Click(.) Handles Button1.Click
Using conn As New SqlConnection(connString)
conn.Open()
Dim sqlcmd As New SqlCommand("spGet_Customer", conn)
sqlcmd.CommandType = CommandType.StoredProcedure
sqlcmd.Connection = conn
sqlcmd.Parameters.AddWithValue("@custID", 100001)
Dim dataAdapter As New SqlDataAdapter(sqlcmd)
Dim commBuilder As SqlCommandBuilder = New
SqlCommandBuilder(dataAdapter)
dataAdapter.Update(dt)
End Using
End Sub


commBuilder.GetUpdateCommand.CommandText ergibt folgendes:
UPDATE [tblCustomers] SET [ID_cust] = @p1, [firstName] = @p2, [lastName] > @p3 usw.

Anscheinend werden die Paramter nicht richtig gefüllt.

cb.GetUpdateCommand.Parameters.Item(1):
SourceColumn: "lastName"
SqlValue: Nothing !!!!
Value: Nothing !!!!

Hat jmd. ein Beispiel wie so eine zurückzuschreibende Struktur inklusive
der Gespeicherten Prozedur auszusehen hat?
Für Beispiele wàre ich sehr dankbar. Ebenfalls für Hinweise, was hier
falsch gemacht wurde.



Hi Maik,
wenn du dir die Parameterwerte anschaust und nicht im Update-Prozess bist
(OnRowUpdating), dann können da auch keine Werte stehen.

Das von dir dargstellte Update-Prinzip ist richtig. Für dein Problem kann es
aber viele Ursachen geben. Die hàufigsten sind:

- falsche Datenbanktabelle wird angeschaut (z.B. bei attacheddbfile mit Copy
bei jedem build und Test in der IDE)
- unpassend gesetztes AcceptChanges
- fehlendes EndCurrentEdit
- uvam.

Ohne konkreten Code kann man da nur raten.

Viele Gruesse

Peter

Ähnliche fragen