<< Click to Display Table of Contents >> SQL-API in der ad-hoc-generierten Klasse |
Die Server-SQL-API ähneln denen in JavaScript, haben aber mehrere Vorteile:
•Oft genutzte SQL-APIs werden im Hintergrund als eine SQL-gespeicherte Prozedur gespeichert. Bei JavaScript-SQL-API dagegen wird bei jedem Aufruf eine neue SQL-gespeicherte Prozedur erzeugt und nachher gelöscht.
•Die Parameter werden mit dem Präfix @ genutzt und die Werte werden als übliche Parameter übermittelt.
•Für die Parameter werden Typen vorgegeben (int, int[], string, string[]), die bei der Kompilierung geprüft werden.
•Die Ergebnisstypen sind ähnlich wie bei JavaScript-SQL-APIs, zusätzlich wird unterschieden, ob string oder int.
•Für ein Ergebnis vom Typ IDBResultset kann optional automatisch eine vererbte Klasse generiert werden, die die Spalten über Attribute mappt.
•In der Management Console lässt sich die SQL-API ausführen oder nur die Syntax prüfen.
SQL-API Konfigurieren
Name:
SQL-API Name, wie z.B. get_rechner_ram
Rückgabewert:
Da die SQL-APIs aus C# genutzt werden, sind die möglichen Rückgabewerte mit C# kompatibel.
Außer den Standard-C#-Typen void, int, int[], string und string[] gibt es zwei weitere rimacon-C#-Typen:
1)rimacon.cmdb.scripting.IDBResultset: wenn Ergebnis ein Resultset/Recordset ist
2)rimacon.cmdb.scripting.SafeHashtable: wenn das Ergebnis ein Resultset/Recordset mit zwei Spalten ist und die erste Spalte wird als „key“ und die zweite Spalte als „value“ betrachtet, dann werden die Pärchen key/value in ein Hashtable gespeichert. Die Klasse SafeHashtable dient als Kapsel für die Standard- Hashtable-Klasse, um zu verhindern, dass null zurückgegeben wird. Der Operator this[key_as_string] gibt immer eine Zeichenfolge zurück. Wenn key unbekannt ist, wird entweder eine leere Zeichenfolge oder einen Defaultwert (optional zweiter Parameter von this[]) zurückgegeben. Hinweis: key und value sind immer vom Typ string.
Beispiel für SafeHashtable:
SQL-API Name : id_to_rol Rückgabewert: SafeHashtable SQL : select ROL_ID, ROL_NAME from ROL
OnPress-Ereignis SafeHashtable trans = this.id_to_rol(); int rolid = 1; string rolname = trans[rolid.ToString()];
|
Über JavaScript aufrufbar:
Wenn aktiv, kann die SQL-API aus JavaScript aufgerufen werden. Sie befindet sich unter Namespace rimacon._userform._server. Diese Option sollte aus Sicherheitsgründen möglichst wenig genutzt werden.
Verursacht Änderungen in der Datenbank
Lassen Sie diese Option unchecked, wenn die SQL-API keine Änderungen in der Datenbank verursacht (z.B. nur select). Diese Option ist wichtig für die Performance.
SQL-APIs, die evtl. Änderungen in der Datenbank verursachen können, erfordern zusätzliche Maßnahmen.
Parameter
Definieren Sie die Parameter für die SQL-API. Mögliche Typen sind int, int[], string und string[].
Typ int[] wird als „table (intvalue int)“ implementiert.
Typ string[] wird als „table (stringvalue nvarchar(max))“ implementiert.
Spalten fix definieren
Wenn das Ergebnis der SQL-API vom Typ IDBResultset ist, kann optional automatisch eine vererbte Klasse generiert werden, die die Spalten über Attribute mappt; d.h., die Spaltennamen werden während der Kompilierung geprüft. Dies macht die Programmierung sicherer.
Vergleich:
IDBResultset: rs[i,"VCOL_STAT"]
Vererbte Klasse: rs.VCOL_STAT(i)
Konstanten binden
In der Liste befinden sich alle Servervariablen, die als eine Konstante bezeichnet wurden. Die Konstante kann dann direkt in SQL genutzt werden.
Beispiel:
Servervariable Name : ROL_ADMIN Typ : int Konstante : ja Initialwert: select ROL_ID from ROL where ROL_MDT_ID=1 and ROL_NAME='admin'
SQL-API Name : get_admins Rückgabewert: int[] SQL : select ANWROL_ANW_ID from ANWROL where ANWROL_ROL_ID=@ROL_ADMIN
|