Code-Beispiel
Ein Beispiel zum Einsatz der Klasse System.Data.OleDb.OleDbCommand aus der .NET-Klassenbibliothek.
Autor: Dr. Holger Schwichtenberg
Beschreibung
Das Ändern von Daten über ein DataSet-Objekt ist dann nicht der geeignete Weg, wenn die Datensätze gar nicht gelesen werden müssen, sondern direkt eine Veränderung auf der Datenquelle ausgeführt werden soll. Sofern die Datenquelle die Ausführung von SQL-DML-Befehlen unterstützt, kann man diese Befehle direkt mit Hilfe der Klasse OleDbCommand (bzw. SqlCommand beim SQL-Server) übermitteln.
Ein OleDbCommand erwartet bei der Instanziierung als Parameter einen Befehlstext und ein geöffnetes OleDbConnection-Objekt:
Dim Cmd As New OleDbCommand("Befehl", objConn)
Danach können Parameter wie die Timeout-Zeit gesetzt werden. Die Ausführung des Befehls beginnt mit einem der drei in der folgenden Tabelle genannten Methodenaufrufe:
Methode Erläuterung
ExecuteNonQuery() Ausführung eines SQL-Befehls oder einer Stored Procedure ohne Rückgabemenge (z.B. INSERT, DELETE, UPDATE)
ExecuteReader() Ausführung eines SQL-Befehls (SELECT) oder einer Stored Procedure mit Rückgabemenge.
ExecuteScalar() Ausführung eines SQL-Befehls oder einer Stored Procedure, die einen einzelnen Wert zurückliefert
Beispiel
Im folgenden Beispiel wird über die bereits verwendete Tabelle "Produkt" aus der Datenbank EDVShop.mdb eine SQL-UPDATE-Anweisung ausgeführt, die alle Preise um 3,0 % erhöht.
Für die Erfolgskontrolle (Vorher-Nachher-Vergleich) wird auf die in Kapitel 1.5 vorgestellte Routine ADONET_DR1() zurückgegriffen, die den Inhalt der Tabelle "Produkt" ausgibt.
Programmcodebeispiele Visual Basic .NET (VB.NET)
' ============================
' .NET-Code-Beispiel in Visual Basic .NET
' Daten ändern mit der Ausführung eines OleDbCommand
' (C) Holger@Schwichtenberg.de
' ============================
Sub ADONET_DoCmd()
' --- Produktliste vorher ausgeben
ADONET_DR1()
Const Befehl = "UPDATE Produkte SET Produkte.Preis = [Preis]*1.03;"
' --- Vorbereiten
Dim Conn As New OleDbConnection(CONNSTRING)
Conn.Open()
Dim Cmd As New OleDbCommand(Befehl, Conn)
Cmd.CommandTimeout = 2 ' maximal 2 Sekunden warten
' --- Ausführen
Cmd.ExecuteNonQuery()
' --- Schließen
Conn.Close()
' --- Produktliste nachher ausgeben
ADONET_DR1()
End Sub
Programmcodebeispiele CSharp (C#)
using System;
using System.Data;
using System.Data.OleDb;
namespace FCLBuch._SystemData {
public class SamplesADONETCommand {
public void ADONET_DoCmd() {
// Daten ändern mit der Ausführung eines OleDbCommand
// Produktliste vorher ausgeben
// VErwenden von SamplesADONETDataReader
new SamplesADONET_DataReader().ADONETDR1();
FclOutput.PrintOut("Preiserhöhung um 3%...");
string befehl = "UPDATE Produkte SET Produkte.Preis = [Preis]*1.03;";
// Vorbereiten
OleDbConnection conn = new OleDbConnection( ADONET_Globals.ConnectionString );
conn.Open();
OleDbCommand cmd = new OleDbCommand( befehl, conn );
cmd.CommandTimeout = 2; // maximal 2 Sekunden warten
// Ausführen
cmd.ExecuteNonQuery();
// Schliessen
conn.Close();
// Produktliste nachher ausgeben
new SamplesADONET_DataReader().ADONETDR1();
}
}
}
Querverweise
Liste aller Codebeispiele
Definition '.NET Framework Class Library'
Verfügbarkeit der Klasse 'System.Data.OleDb.OleDbCommand'
Übersicht über den FCL-Namensraum 'System.Data.OleDb'
.NET & Visual Studio Community Portal