Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1550 | Anzahl registrierter User: 1841 | Besucher online: 54
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

SQL INSERT-Stringbuilder Function


Autor: Gast
Sprache: VB.NET
Bewertung:
5.92 (3 votes)
Anzahl der Aufrufe: 8660
  
Kick it on dotnet-kicks.de  

Beschreibung:

Benutzung:

Dim fishe() As String = {"Goldfische", "Blas"}
Dim werte() As String = {"24 Goldies", "37 Blas"}
MsgBox(SQL_Build_INSERT("Tiere", fishe, werte))

Ergebis:

INSERT INTO Tiere (`Goldfische`, `Blas`) VALUES ('Goldfische', 'Blas')

Hoffe es hilft euch weiter...
GreeZ TTP


Abgelegt unter: SQL, MySQL, INSERT, STRINGbuilder, FUNCTION.



Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
Private Function SQL_Build_INSERT(ByVal Tablename As String, ByVal Felder As Array, ByVal Werte As Array) As String
        Dim res As String = Nothing
        If Tablename = Nothing Or Felder.Length = 0 Or Felder.Length <> Werte.Length Then
            Throw New Exception("Tablename or Felder = NOTHING or Felder.Length <> Werte.Length")
        End If
        Dim ai As Integer = Felder.Length
        Dim i As Integer
        res = "INSERT INTO " & Tablename & " ("
        For i = 0 To Felder.Length - 1
            If i = 0 Then
                res &= "`" & Felder(i).ToString & "`"
            Else
                res &= ", `" & Felder(i).ToString & "`"
            End If
        Next
        res &= ") VALUES ("
        For i = 0 To Werte.Length - 1
            If i = 0 Then
                If Werte(i).ToString = Nothing Then
                    res &= "NULL"
                Else
                    res &= "'" & Felder(i).ToString & "'"
                End If
            Else
                If Werte(i).ToString = Nothing Then
                    res &= ", NULL"
                Else
                    res &= ", '" & Felder(i).ToString & "'"
                End If
            End If
        Next
        res &= ")"
        Return res
    End Function
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)

TTP schrieb am:  12.09.2008 19:21:02

Nette Idee :)
Jan Welker schrieb am:  12.09.2008 22:32:35

Ich halte diesen Snippet für sehr bedenklich und kann jedem ans Herz legen, SQL Statements nur mit Hilfe von Parametern aufzubauen. Werden die Strings einfach nur verkettet, besteht die Gefahr von SQL Injection!

Weiterführende Links:
http://de.wikipedia.org/wiki/SQL_Injection
http://msdn.microsoft.com/de-de/library/system.data.sqlclient.sqlparameter.aspx
TTP schrieb am:  14.09.2008 11:26:22

Der Code ist auch nur Gedacht um die Programmierung von festen SQL-Abfragen zu vereinfachen. Ich hab ein Programm was mehrere verschiedene SQL Abfragen ändert. Der Betreiber des SQL-Servers ändert nur gern mal Feldnamen und so macht es mir das einfacher und schneller den Code zu ändern und nicht alle SQL-Strings per Hand umzuschreiben, denn ich brauch dann nur den nötigen Array ändern.

Der Meinung, dass man diesen Code vor SQL-Injection schützen muss, bin ich aber auch!
TTP schrieb am:  14.09.2008 11:28:57

http://dotnet-snippets.de/dns/c-schutz-vor-sql-injektion-SID201.aspx
C# Schutz vor SQL-Injektion

Das ganze noch für die Update-Routinge
Private Function SQL_Build_UPDATE(ByVal Tablename As String, ByVal Felder As Array, ByVal Werte As Array, ByVal WHERE As String, Optional ByVal LIMIT As String = "") As String
Dim res As String = Nothing
If Tablename = Nothing Or Felder.Length = 0 Or Felder.Length <> Werte.Length Then
Throw New Exception("Tablename or Felder = NOTHING or Felder.Length <> Werte.Length")
End If
Dim ai As Integer = Felder.Length
Dim i As Integer
res = "UPDATE " & Tablename & " SET "
For i = 0 To Felder.Length - 1
If Werte(i).ToString = Nothing Then
If i = 0 Then
res &= "`" & Felder(i).ToString & "` = NULL"
Else
res &= ", `" & Felder(i).ToString & "` = NULL"
End If
Else
If i = 0 Then
res &= "`" & Felder(i).ToString & "` = '" & Werte(i).ToString & "'"
Else
res &= ", `" & Felder(i).ToString & "` = '" & Werte(i).ToString & "'"
End If
End If
Next

res &= " WHERE " & WHERE
If Not LIMIT = "" Then
res &= " LIMIT " & LIMIT
End If

Return res
End Function


Funktionsweise:
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim felder() As String = {"id", "name", "change"}
Dim werte() As String = {"6", "bla", ""}
MsgBox(SQL_Build_UPDATE("Table", felder, werte, "id='4'", "1"))
End Sub
Kottmann, David schrieb am:  16.01.2010 16:55:15

Im Zusammenspiel mit dem MSSQL Server 2008 musste ich ein paar kleine Änderungen vornehmen, folgender Abschnitt scheint mir aber einen kleinen Fehler zu enthalten:

 For i = 0 To Werte.Length - 1
If i = 0 Then
If Werte(i).ToString = Nothing Then
res &= "NULL"
Else
res &= "'" & Werte(i).ToString & "'"
End If
Else
If Werte(i).ToString = Nothing Then
res &= ", NULL"
Else
res &= ", '" & Werte(i).ToString & "'"
End If
End If
Next

MSSQL 2008
Public Function SQL_Build_INSERT(ByVal Tablename As String, ByVal Felder As Array, ByVal Werte As Array) As String
Dim res As String = Nothing
If Tablename = Nothing Or Felder.Length = 0 Or Felder.Length <> Werte.Length Then
Throw New Exception("Tablename or Felder = NOTHING or Felder.Length <> Werte.Length")
End If
Dim ai As Integer = Felder.Length
Dim i As Integer
res = "INSERT INTO " & Tablename & " ("
For i = 0 To Felder.Length - 1
If i = 0 Then
res &= """" & Felder(i).ToString & """"
Else
res &= ", """ & Felder(i).ToString & """"
End If
Next
res &= ") VALUES ("
For i = 0 To Werte.Length - 1
If i = 0 Then
If Werte(i).ToString = Nothing Then
res &= "NULL"
Else
res &= "'" & Werte(i).ToString & "'"
End If
Else
If Werte(i).ToString = Nothing Then
res &= ", NULL"
Else
res &= ", '" & Werte(i).ToString & "'"
End If
End If
Next
res &= ")"
Return res
End Function


schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.