Blog Schröder

Sammlung von Codeschnipseln zu Programmierproblemen.
Daten aus fremden Quellen unterliegen deren Rechten.
Siehe auch: Disclaimer auf www.computer-schroeder.de

Donnerstag, 16. August 2007

Zeile in DB-Tabelle zufügen

''' <summary>
''' fügt einer Tabelle eine neue Zeile zu und trägt die ID ein
''' </summary>
''' <param name="table">Die Tabelle</param>
''' <param name="ID">Wert des Schlüsselfeldes ID</param>
''' <param name="values">Datenwerte je nach Tabelle in der Feldreihenfolge der Tabelle</param>
''' <remarks>Dies ist nur möglich für Tabellen mit dem Feldnamen ID</remarks>
Public Sub DBInsert(ByVal tablename As String, ByVal ID As String, ByVal ParamArray values() As Object)

'baue die Werteliste und erkenne, wie viele Werte hineingehören
Dim valueList As New StringBuilder
For i As Integer = 0 To UBound(values, 1)
valueList.Append("'" & values(i) & "', ")
Next i
valueList.Remove(valueList.Length - 1, 2) 'schneide letztes Komma ab

'Erzeuge die Abfrage (Einfügen: ID, Werte, Pseudo-_TimeStamp)
Dim sqlText As String = String.Format("INSERT INTO [{0}] VALUES ('{1}', {2})", tableName, ID, values.ToString)
Dim acceptedRows As Integer
Try
acceptedRows = doSql(sqlText, QueryReturns.Value) 'Einfügen der Zeile
Catch ex As Exception
f = Format("Einfügen in Tabelle {0} fehlgeschlagen" & vbCrLf, tableName)
MsgBox(sqlText & vbCrLf & ex.Message)
Exit Sub
End Try
If acceptedRows = 0 Then
f = String.Format("Es konnte keine Zeile in Tabelle {0} eingefügt werden." & vbCrLf, tableName)
MsgBox( f & String.Format("Nicht eingefügte Werte für Key {0}: {1}", ID, values.ToString))
Exit Sub
End If
End Sub


--- alt ---

''' <summary>
''' fügt einer Tabelle eine neue Zeile zu und trägt die ID ein
''' </summary>
''' <param name="table">Die Tabelle</param>

''' <param name="ID">Wert des Schlüsselfeldes ID</param>
''' <param name="value1">und folgende: Datenwerte
''' je nach Tabelle in der Reihenfolge der Tabelle.
''' Für NULL-Wert Argument auslassen (nur Komma schreiben)</param>

''' <remarks>Dies ist nur möglich für Tabellen mit dem Feldnamen ID.</remarks>

Public Sub DBAddRow(ByVal table As TMserverDBTables, ByVal ID As String, _
Optional ByVal value1 As Object = Nothing, Optional ByVal value2 As Object = Nothing, _
Optional ByVal value3 As Object = Nothing, Optional ByVal value4 As Object = Nothing, _
Optional ByVal value5 As Object = Nothing, Optional ByVal value6 As Object = Nothing, _
Optional ByVal value7 As Object = Nothing, Optional ByVal value8 As Object = Nothing)

Dim f As String 'Hilfsstring
'Schließe die falschen Tabellen aus
Dim tableName As String = Enum.GetName(GetType(TMserverDBTables), table)
'erlaubte Tabelle?
If (table And 1) Or (table And 2) Then
f = "Tabelle " & tableName & " nicht als Argument zugelassen"
log.Fault("DBAddRow", f)
Exit Sub
End If

'baue die Werteliste
Dim values As New StringBuilder
values.Append(IIf(value1 Is Nothing, " NULL", " '" & value1 & "'"))
values.Append(IIf(value2 Is Nothing, ", NULL", ", '" & value2 & "'"))
values.Append(IIf(value3 Is Nothing, ", NULL", ", '" & value3 & "'"))
values.Append(IIf(value4 Is Nothing, ", NULL", ", '" & value4 & "'"))
values.Append(IIf(value5 Is Nothing, ", NULL", ", '" & value5 & "'"))
values.Append(IIf(value6 Is Nothing, ", NULL", ", '" & value6 & "'"))
values.Append(IIf(value7 Is Nothing, ", NULL", ", '" & value7 & "'"))
values.Append(IIf(value8 Is Nothing, ", NULL", ", '" & value8 & "'"))
'Erzeuge die Abfrage
Dim sqlText As String = "INSERT INTO '" & tableName & "' VALUES ('" & ID & "', " & values.ToString & ")"

Dim acceptedRows As Integer
Try
acceptedRows = doSql(sqlText, QueryReturns.Value) 'Einfügen der Zeile
Catch ex As Exception
f = Format("Einfügen in Tabelle {0} fehlgeschlagen", tableName) & vbCrLf
log.Fault("DBAddRow", f &amp; "ID: " & ID & " Values: " & values.ToString & vbCrLf & ex.Message)
Exit Sub
End Try
If acceptedRows = 0 Then
f = "Es konnte keine Zeile in Tabelle " &amp; tableName & " eingefügt werden." & vbCrLf
log.Fault("DBAddRow", f & String.Format("Nicht eingefügte Werte für Key {0}: {1}", ID, values))
End If
'fertig
log.Test("DBAddRow", String.Format("Eingefügte Werte für Key {0}: {1}", ID, values))
End Sub

Labels: ,

Links zu diesem Post:

Link erstellen

<< Startseite