LösungMit dem Command-Objekt von ADO.NET Zunächst müssen Sie eine Entwicklungsumgebung für .NET besitzen und installieren. Besonders einfach kann dies mit den Express Versionen des Visual Studios, die kostenlos verfügbar sind, realisiert werden. Sie können diese Express Versionen unter http://www.microsoft.com/germany/msdn/vstudio/products/express/default.mspx herunterladen. Die Beispiele benutzen VB.NET.
Dim con As SqlConnection = GetConnection()
Dim cdo As New SqlCommand("INSERT INTO dbo.Anreden (Anrede) VALUES ('Firma')", con)
Dim countRows As Integer = cdo.ExecuteNonQuery()
con.Close()
MessageBox.Show(countRows.ToString & " Zeilen wurden eingefügt")
Private Function GetConnection() As SqlConnection
Dim conString As String
conString = "Server=BEVPC\SQLExpress;database=MSDNSolve;Integrated Security=true"
Dim con As SqlConnection = Nothing
Try
con = New SqlConnection(conString)
con.Open()
Catch ex As Exception
Throw (ex)
End Try
Return con
End Function
Sie müssen beachten, dass die Connection (die Verbindung) über eine Funktion bereitgestellt wird. GetConnection() sorgt dafür, dass ich immer eine geöffnete Verbindung (wenn ohne Fehler möglich) bekomme. Einer der Konstruktoren des Command-Objektes nimmt ein SQL –Statement entgegen und ein Connection-Objekt entgegen. Wenn es sich um ein „Aktionsabfrage“ Statement handel (INSERT, UPDATE, DELETE, CREATE TABLE etc.) empfiehlt sich die Methode ExecuteNonQuery ExecuteNonQuery führt den SQL Befehl aus, aber geht davon aus, dass keine Datensätze zurückkommen (daher für SELECT gar nicht zu gebrauchen); daher Non Query=Keine Abfrage. Stattdessen wird die Anzahl der betroffenen Datensätze in einem Integer-Wert zurückgegeben.
Dim con As SqlConnection = GetConnection()
Dim sql As String
sql = "SELECT ZiffernUndZeichen from dbo.Kommunikation where AdressenID=@AdressenID and IstHauptanschluss=1"
Dim cdo As New SqlCommand(sql, con)
cdo.Parameters.Add(New SqlParameter("@AdressenID", 2))
Dim result As Object = cdo.ExecuteScalar()
If result.Equals(DBNull.Value) Then
MessageBox.Show("Kein Hauptanschluss")
Else
MessageBox.Show(result.ToString & " Hauptanschluss")
End If
con.Close()
Soll ein Wert zurückgegeben werden, empfiehlt sich ExecuteScalar. Wie der Name schon sagt, gibt die Methode nur einen Skalarwert zurück. Sie sehen im Beispiel ein SELECT –Statement, dass auch nur einen Wert zurückgibt; Sie können ExecuteScalar() auch mit SQL Statements benutzen, dass mehrere Spalten und Zeilen zurück gibt. ExecuteScalar() gibt aber immer nur die erste Spalte links der ersten Zeile zurück.
Verbinden und Abrufen von Daten mit ADO.NET
SqlCommand-Klasse Fragen? Im Blog: http://blogs.sqlserverfaq.de oder an droege@beconstructed.de |