DB-Zugriffe - Beispiele

sql
data

#1

Hier werden die wichtigsten Zugriffsmöglichkeiten kurz beschrieben

Einzelne Aktionen für die einfache Ausführung

Bei allen folgenden Aktionen wird eine Datenbankverbindung geöffnet, die Aktion ausgeführt und die Verbindung wieder getrennt.

DataTable GetDataTable(string sql, DB2ParamList paramList = null)

Liest Daten anhand eines SQL-Statements und gibt diese in einer DataTable zurück.
Die Angabe einer Parameterliste ist optional.

Beispiel var dt = ML.DB2.GetDataTable("Select * from MyTable");
Beispiel mit Parametern

DataTable GetDataTableFromStoredProcedure(string procName, DB2ParamList paramlist = null)

Liest Daten anhand einer StoredProcedure und gibt diese in einer DataTable zurück.
Die Angabe einer Parameterliste ist optional.
Beispiel var dt = ML.DB2.GetDataTableFromStoredProcedure("MYLIB.MYPROC");

object ExecuteScalar(string strSQL)

Liest einen einzelnen Wert anhand eines SQL-Statements und gibt diesen zurück.

Anm.:Da hier verschiedene Typen zurückgegeben werden können, muss der Typ anschließend umgewandelt werden.

Beispiel string wert = ML.DB2.ExecuteScalar("Select Field from Table")?.ToString();

int ExecuteSQL(string sql)

führt einen SQL-Befehl aus und liefert die Anzahl der betroffenen Records zurück.
Beispiel: ML.DB2.ExecuteSQL(“Delete from Table where ID = 3”);

int ExecuteParamSQL(string sql, DB2ParamList paramList)
führt einen parametrisierten SQL-Befehl aus und liefert die Anzahl der betroffenen Records zurück.

bool ExecuteCommand(string command)

führt einen Command aus und liefert true zurück wenn keine Fehler aufgetreten sind.

ExecuteStoredProcedure(string procName, DB2ParamList paramlist = null)

führt eine StoredProcedure aus.
Die Angabe einer Parameterliste ist optional.

Ausführen von mehreren Aktionen innerhalb einer Verbindung

In .Net sollen Datenbankverbindungen grundsätzlich nicht über einen längeren Zeitraum offen gehalten werden, da diese Ressourcen auf dem Host verbrauchen, und bei aktiviertem Pooling auch mal beendet werden können.

Deshalb können die obigen Befehle auch mit einer gemeinsamen Verbindung ausgeführt werden.

IDbConnection CreateDbConnection(bool openConnection)

Hiermit kann eine lokale Datenbankverbindung erzeugt werden. Wenn Sie OpenConnection auf true setzen,
wird diese auch sofort geöffnet.

Beispiel für Verwendung einer lokalen Datenbankverbindung

// lokale Verbindung erzeugen und gleich öffen 
var conn = ML.DB2.CreateDbConnection(true);
var dt = ML.DB2.GetDataTable(conn, "Select * from MyTable");
var value = ML.DB2.ExecuteScalar(conn, "Select Field from Table")?.ToString();
ML.DB2.ExecuteSQL(conn, "Delete from Table where ID = 3");
conn.Close();  // Verbindung wieder schliessen

Anlegen einer Parameterliste

// Parameterliste erzeugen
var paramList = new MLSoft.INext.Data.Host.DB2ParamList();
// Eingabeparameter hinzufügen
paramList.Add(new MLSoft.INext.Data.Host.DB2Param
{  
    ParamTyp = MLSoft.INext.Data.Host.DB2DataType.Char,  // Typ
    Length = 3,   // Länge
    ParameterDirection = ParameterDirection.Input,  // Wert wird übergeben 
    Value = "001"
});
// Rückgabeparameter hinzufügen
paramList.Add(new MLSoft.INext.Data.Host.DB2Param
{
	ParamTyp = MLSoft.INext.Data.Host.DB2DataType.Char,
	Length = 6,
	ParameterDirection = ParameterDirection.InputOutput,   // Wert wird vorbelegt und Resultat zurückgegeben
    Value = ""
});