SQL
Die SQL Library erlaubt SQL Datenbanken zu erstellen und zu behandeln.
Siehe das SQL
tutorial Englisch und das SQL
Tutorial Deutsch, für mehr Informationen.
Liste der Types:
Events:
Keine
Members:
Close
ColumnCount As Int [read only]
GetBlob (ColumnName As String) As Byte()
GetBlob2 (Index As Int) As Byte()
GetColumnName
(Index As Int) As String
GetDouble
(ColumnName As
String) As Double
GetDouble2 (Index As Int) As Double
GetInt (ColumnName As String) As Int
GetInt2 (Index As Int) As Int
GetLong (ColumnName As String) As Long
GetLong2 (Index As Int) As Long
GetString
(ColumnName As
String) As String
GetString2 (Index As Int) As String
IsInitialized As Boolean
Position As Int
RowCount As Int [read only]
Members Erklärungen:
Schließt den Cursor und gibt
Resourcen frei.
ColumnCount As Int [read only]
Gibt die Anzahl der
verfügbaren Spalten im Ergebnis.
GetBlob (ColumnName As String) As Byte()
Gibt den Blob zurück der in
der Spalte Namens ColumName gespeichert ist.
Beispiel:
Dim Buffer() As Byte
Buffer = Cursor.GetBlob("col1")
GetBlob2 (Index As Int) As Byte()
Gibt den Blob zurück der in
der Spalte mit dem gegebenen Index gespeichert ist.
Beispiel:
Dim Buffer() As Byte
Buffer = Cursor.GetBlob2(0)
GetColumnName (Index As Int) As String
Gibt den Namen der Spalte mit dem gebenen Index zurück.
Der erste Spaltenindex ist 0.
GetDouble (ColumnName As String) As Double
Gibt den Double Wert zurück
der in der Spalte Namens ColumName gespeichert ist.
Der Wert wird in ein Double konvertiert wenn der Wert eines anderen Types ist.
Beispiel:
Log(Cursor.GetDouble("col2"))
GetDouble2 (Index As Int) As Double
Gibt den Double Wert zurück der
in der Spalte mit dem gegebenen Index gespeichert ist.
Der Wert wird in ein Double konvertiert wenn der Wert eines anderen Types ist.
Beispiel:
Log(Cursor.GetDouble2(0))
GetInt (ColumnName As String) As Int
Gibt den Int (Integer) Wert
zurück der in der Spalte Namens ColumName gespeichert ist..
Der Wert wird in ein Int konvertiert wenn der Wert eines anderen Types ist.
Beispiel:
Log(Cursor.GetInt("col2"))
GetInt2 (Index As Int) As Int
Gibt den Int (Integer) Wert
zurück der in der Spalte mit dem gegebenen Index gespeichert ist.
Der Wert wird in ein Int konvertiert wenn der Wert eines anderen Types ist.
Beispiel:
Log(Cursor.GetInt2(0))
GetLong (ColumnName As String) As Long
Gibt den Long Wert zurück der
in der Spalte Namens ColumName gespeichert ist..
Der Wert wird in ein Long konvertiert wenn der Wert eines anderen Types ist.
Beispiel:
Log(Cursor.GetLong("col2"))
GetLong2 (Index As Int) As Long
Gibt den Long Wert zurück der
in der Spalte mit dem gegebenen Index gespeichert ist.
Der Wert wird in ein Long konvertiert wenn der Wert eines anderen Types ist.
Beispiel:
Log(Cursor.GetLong2(0))
GetString (ColumnName As String) As String
Gibt den String Wert zurück
der in der Spalte Namens ColumName gespeichert ist..
Der Wert wird in ein String konvertiert wenn der Wert eines anderen Types ist.
Beispiel:
Log(Cursor.GetString("col2"))
GetString2 (Index As Int) As String
Gibt den String Wert zurück
der in der Spalte mit dem gegebenen Index gespeichert ist.
Der Wert wird in ein String konvertiert wenn der Wert eines anderen Types ist.
Beispiel:
Log(Cursor.GetString2(0))
IsInitialized As Boolean
Holt oder setzt die aktuelle
Stelle (Zeile / row).
Beachten Sie daß die Startposition des Curors die von einer Query (Anfrage)
zurückgegeben wird -1 ist.
Die erste gültige Stelle ist 0.
Beispiel:
Dim Cursor As Cursor
Cursor = SQL1.ExecQuery("SELECT col1, col2 FROM table1")
For i = 0 To Cursor.RowCount - 1
Cursor.Position = i
Log(Cursor.GetString("col1"))
Log(Cursor.GetInt("col2"))
Next
Cursor.Close
RowCount As Int [read only]
Gibt die Anzahl der verfügbaren
Zeilen im Ergebnis
Das Hauptobjekt das auf die Datenbank zugreift.
Events:
Keine
Members:
BeginTransaction
Close
EndTransaction
ExecNonQuery
(Statement As String)
ExecNonQuery2
(Statement As String, Args As List)
ExecQuery (Query As String) As android.database.Cursor
ExecQuery2 (Query As String, StringArgs() As String) As android.database.Cursor
ExecQuerySingleResult
(Query As String) As String
ExecQuerySingleResult2
(Query As String, StringArgs() As String) As String
Initialize (Dir As String, FileName As String,
CreateIfNecessary As Boolean)
IsInitialized As Boolean
TransactionSuccessful
Members Erklärungen:
Beginnt eine
Transaction. Eine Transaction ist ein Satz von Schreibanweisungen die
automatisch übermittelt werden bis alle Änderungen gemacht wurden oder keine
Änderungen gemacht wurden.
Diese Anweisungen
werden deutlich schneller ausgeführt (im Standardfall wird implizit eine
Transaction für jede Anweisung erstellt).
Es ist sehr wichtig, Transaction sorgfältig durchzuführen und zu schließen.
Die Transaktion wird als erfolgreich angesehen, nur wenn TransactionSuccessful
aufgerufen wird. Ansonsten werden keine Änderungen vorgenommen.
Typische Anwendung:
SQL1.BeginTransaction
Try
'block of statements like:
For i = 1 to 1000
SQL1.ExecNonQuery("INSERT
INTO table1 VALUES(...)
Next
SQL1.TransactionSuccessful
Catch
Log(LastException.Message) 'no
changes will be made
End Try
SQL1.EndTransaction
Close
Schließt die Datenbank.
Macht nichts wenn die Datenbank nicht geöffnet ist oder vorher nicht
geschlossen wurde.
EndTransaction
ExecNonQuery (Statement As String)
Führt eine einzige 'non query'
(ohne Anfrage) SQL Anweisung aus.
Beispiel:
SQL1.ExecNonQuery("CREATE TABLE table1 (col1 TEXT , col2 INTEGER, col3
INTEGER)")
Wenn man viele Schreibanweisungen ("writing" queries), Eine nach der
Anderen machen will, ist es vorteilhaft BeginTransaction / EndTransaction zu
benutzten.
Dies wird viel schneller durchgeführt.
ExecNonQuery2 (Statement As String, Args As List)
Führt eine einzige 'non
query' SQL Anweisung aus.
Die Anweisung kann Fragezeichen enthalten die durch die Inhalte der gegebenen
Liste ersetzt werden.
Beachten Sie daß Basic4android Arrays automatisch zu Listen konvertiert.
Die Werte in der Liste können Strings, Zahlen oder Bytearrays sein.
Beispiel:
SQL1.ExecNonQuery2("INSERT INTO table1 VALUES (?, ?, 0)", Array As Object("some text", 2))
ExecQuery (Query As String) As android.database.Cursor
Führt die 'query' Anfrage
durch und gibt einen Cursor zurück der benutzt wird die Resultate zu lesen.
Beispiel:
Dim Cursor As Cursor
Cursor = SQL1.ExecQuery("SELECT col1, col2 FROM table1")
For i = 0 To Cursor.RowCount - 1
Cursor.Position = i
Log(Cursor.GetString("col1"))
Log(Cursor.GetInt("col2"))
Next
ExecQuery2 (Query As String, StringArgs() As String) As android.database.Cursor
Führt die 'query' Anfrage
durch und gibt einen Cursor zurück der benutzt wird die Resultate zu lesen.
Die Anfrage kann Fragezeichen enthalten die durch die Inhalte der gegebenen
Liste ersetzt werden.
Beispiel:
Dim Cursor As Cursor
Cursor = sql1.ExecQuery2("SELECT col1 FROM table1 WHERE col3 = ?", Array As String(22))
SQLite wird versuchen die Stringwerte in den Type der Spalten zu konvertieren.
ExecQuerySingleResult (Query As String) As String
Führt die 'query'
Anfrage durch und gibt den Wert der ersten Spalte und ersten Zeile zurück (im
Resultatensatz).
Gibt Null zurück wenn kein Resultat gefunden wurde.
Beispiel:
Dim NumberOfMatches As Int
NumberOfMatches = SQL1.ExecQuerySingleResult("SELECT
count(*) FROM table1 WHERE col2 > 300")
ExecQuerySingleResult2 (Query As String, StringArgs() As String) As String
Führt die 'query'
Anfrage durch und gibt den Wert der ersten Spalte und ersten Zeile zurück (im
Resultatensatz).
Die Anfrage kann Fragezeichen enthalten die durch die Inhalte der gegebenen
Liste ersetzt werden.
Gibt Null zurück wenn
kein Resultat gefunden wurde.
Beispiel:
Dim NumberOfMatches As Int
NumberOfMatches = SQL1.ExecQuerySingleResult2("SELECT
count(*) FROM table1 WHERE col2 > ?", Array As String(300))
Initialize (Dir As String, FileName As String, CreateIfNecessary As Boolean)
Öffner die Datenbankdatei.
Eine neue Datenbank wird erstellt Falls sie nicht existiert und
CreateIfNecessary gleich True ist.
WICHTIG: Dieses Objekt muß in Sub Process_Globals deklariert werden.
Beispiel:
Dim SQL1 As SQL
SQL1.Initialize(File.InternalDir, "MyDb.db", True)
IsInitialized As Boolean
Testet ob die Datenbank initialisiert
und geöffnet ist.
TransactionSuccessful
Markiert die
Transaction als eine erfolgreich durchgeführte Transaction.
Keine weitere
Anweisung darf durchgeführt werden bevor EndTransaction aufgerufen wurde.