Zum Inhalt springen

funrecycler

Tipps und Tutorials

Primäres Menü
  • Startseite
  • Start
  • 2010
  • März
  • 10.
  • VB.net – sqlite Datenbankanbindung – Teil 3

VB.net – sqlite Datenbankanbindung – Teil 3

iang 10. März 2010 5 Minuten gelesen

Im zweiten Teil wurden per Quellcode Tabellen erstellt und Daten eingefügt. Im dritten Teil nun ein paar Funktionen zum abrufen von Daten aus sqlite Tabellen. Hierfür verwende ich mehrere Funktionen. Dies ist notwendig da einige Abfragen nur ein einziges Ergebnis liefern, andere wiederum eine komplette Tabelle. Praktischerweise speichert man solche Abfragedaten in ein Array um sie später einfacher zu verwenden. 1. NonAry Abfragen Für den normalen Gebrauch ergeben sich so 3 unterschiedliche Abfragetypen. Möchte man zum Beispiel die Anzahl Zeilen einer Tabelle zurückgeben, so erledigt man dies mit "select count(*) from …". Als Ergebnis erhält man eine Zahl. Als Datentyp kommt hier Integer in Frage. Für diese Art der Abfrage baut man sich eine Funktion welche als Rückgabe eine Ergebnis liefert. Dies sieht wie folgt aus:

Public Function func_sql_one_res(sub_sql as String)
Dim sub_result As String
Dim i As Int16
'cmd erstellen, abfrage zuweisen
sqlite_cmd = sqlite_connect.CreateCommand
sqlite_cmd.CommandText = sub_sql
'abfrage ausführen
dim sqlreader as SQLiteDataReader  = sqlite_cmd.ExecuteReader()
'daten übergeben
sub_result = sqlreader(0)
'rückgabe des strings
return sub_result
End Function

Eventuell möchte man nicht nur die Anzahl Zeilen abfragen, sondern eine Zeichenkette, so ist die interne Variable vom Typ String erforderlich. Bei der Rückgabe aus der Funktion an eine Variable, kann man mit "cint" zum Beispiel das Ergebnis in Integer wandeln. Die Anzahl Zeilen in der Personendaten Tabelle ruft man entsprechend mit "Count" ab.

Dim count_personal as Int64
'sql abfrage erstellen
sqlite_string = "select count(*) from Personen"
'sql abfrage ausführen, rückgabe in var speichern
count_personal = cint(func_sql_one_res(sqlite_string))

2. Eindimensionale Abfragen Eine Abfrage welche als Beispiel, die verschiedenen Städte in der Personen Tabelle liefert, kann nicht mit der ersten Funktion ermittelt werden. Das Ergebnis kann mehre Städte enthalten und somit ist es notwendig ein 1D Array einzusetzen.

Public Function func_sql_1d_ary(sub_sql As String)
'ary erstellen
Dim sub_ary(1000) As String
Dim sub_internal_counter As Int64 = 0
'cmd erstellen, abfrage zuweisen
sqlite_cmd = sqlite_connect.CreateCommand
sqlite_cmd.CommandText = sub_sql
'abfrage ausführen
dim sqlreader as SQLiteDataReader  = sqlite_cmd.ExecuteReader()
'ary füllen
While sqlreader.Read()
    sub_ary(sub_internal_counter) = sqlreader(0)
    sub_internal_counter += 1
End While
'rückgabe des arys
Return sub_ary
End Function

Über den Internal Counter werden die einzelnen Ergebnisse in das Array gespeichert beginnend mit 0. Der Aufruf geschieht analog der ersten Funktion, nur das hier ein Array übergeben wird.

Dim ary_staedte() as String
'sql abfrage erstellen
sqlite_string = "select distinct ort from Personen"
'sql abfrage ausführen, rückgabe in var speichern
ary_steadte = func_sql_1d_ary(sqlite_string)

3. Zweidimensionale Abfragen Nun wird es interessant. Möchte man nun die komplette Personentabelle auslesen, um anschließend die gelesenen Daten in einer Listview darzustellen, ist ein 2D Array notwendig. Ein 2D Array ist nichts anderes als zum Beispiel eine Excel Tabelle. Es gibt Spalten und Zeilen und nach diesen Schema ist sowohl unsere Personen Tabelle aufgebaut als auch das Array welches befüllt werden soll. Auf die 2D Abfrage gehen ich etwas näher ein:

Public Function func_sql_ary(sub_sql As String,sub_sql_count as String

Die Funktion benötigt 2 Parameter, der Abfrage String (Daten) und den Count String (Anzahl Datensätze).

Dim sub_internal_counter As Int64
Dim sub_anzahl_rows as Int64
Dim i As Int16

Interne Variablen

sub_anzahl_rows = func_sql_one(sub_sql_count)

Anzahl der Datensätze über die NonAry Abfrage ermitteln

sqlite_cmd = sqlite_connect.CreateCommand
sqlite_cmd.CommandText = sub_sql

Command erstellen

dim sqlreader as SQLiteDataReader  = sqlite_cmd.ExecuteReader()

Abfrage ausführen

Dim sub_ary(sub_anzahl_rows, sqlreader.FieldCount -1) as String

Array erstellen aus Anzahl der Datensätze und Anzahl der Felder

While sqlreader.Read()
   For i = 0 To sqlreader.FieldCount -1
       sub_ary(sub_internal_counter, i ) = sqlreader(i)
   Next
   sub_internal_counter += 1
End While

Über die While Schleife wird Abfrage abgearbeitet. Innerhalb dieser wird mit der For Schleife die Anzahl der Felder im Array Zeile für Zeile das Array gefüllt. sub_internal_counter = Anzahl Datensätze sqlreader.FieldCount = Anzahl Felder

Return sub_ary

Rückgabe des Arrays Aufruf erfolgt mit 2 Sql Strings.

Dim act_result(,) as String
sqlite_string = "select per_name, per_corname, per_strasse, per_plz, per_ort from personen"
sqlite_string_count = "select count(*) from personen"
act_result = func_sql_ary(sqlite_string, sqlite_string_count)

Die komplette Personen Tabelle befindet sich nun im 2D Array act_result. Das Array ist wie folgt gefüllt: act_result(0,0) = Zeile 1, Feld 1 'Name act_result(0,0) = Zeile 1, Feld 2 'Vorname act_result(0,0) = Zeile 1, Feld 3 'Strasse act_result(0,0) = Zeile 1, Feld 4 'PLZ act_result(0,0) = Zeile 1, Feld 5 'Ort act_result(1,0) = Zeile 2, Feld 1 'Name act_result(1,0) = Zeile 2, Feld 2 'Vorname … Nun viel Spaß mit Sqlite.

Beitragsnavigation

Zurück: link checker firefox
Weiter: kennt ihr Rémi Gaillard ?

Verwandte Geschichten

wetterGW2

Davis Vantage Pro2 im Smart Home: ein kürzerer Weg für die eigenen Wetterdaten

iang 10. Oktober 2026
platformio-logo.17fdc3bc

Installation von Plattform.io unter Linux

iang 18. Oktober 2018

Powertracking mit einem Garmin eTrex Vista HCx ohne geocache_visits.txt

iang 9. Dezember 2013
Neueste Beiträge
  • Davis Vantage Pro2 im Smart Home: ein kürzerer Weg für die eigenen Wetterdaten
  • ARISS/ISS-SSTV unter Ubuntu empfangen: SDRangel mit Doppler-Korrektur, PipeWire und QSSTV
  • Synology: Benutzerpasswort per SSH ändern
  • CHIRP-Unterstützung für den Yaesu FT-991A
  • Meshcore nRF52840 OTA Firmware update. Repeater
Archive
  • Oktober 2026
  • September 2026
  • Juli 2026
  • Februar 2026
  • November 2025
  • Oktober 2025
  • August 2025
  • Februar 2024
  • Januar 2024
  • Oktober 2023
  • Juli 2023
  • Januar 2023
  • Juni 2020
  • April 2020
  • Januar 2020
  • August 2019
  • Mai 2019
  • März 2019
  • Dezember 2018
  • November 2018
  • Oktober 2018
  • September 2018
  • Juni 2014
  • Mai 2014
  • April 2014
  • März 2014
  • Januar 2014
  • Dezember 2013
  • November 2013
  • Oktober 2013
  • Juli 2013
  • April 2013
  • März 2013
  • Januar 2013
  • Dezember 2012
  • November 2012
  • September 2012
  • August 2012
  • Juli 2012
  • Juni 2012
  • Mai 2012
  • April 2012
  • März 2012
  • Februar 2012
  • Januar 2012
  • Dezember 2011
  • November 2011
  • Oktober 2011
  • September 2011
  • August 2011
  • Juli 2011
  • Juni 2011
  • Mai 2011
  • April 2011
  • März 2011
  • Februar 2011
  • Januar 2011
  • Dezember 2010
  • November 2010
  • Oktober 2010
  • September 2010
  • August 2010
  • Juli 2010
  • Juni 2010
  • Mai 2010
  • April 2010
  • März 2010
  • Februar 2010
  • Januar 2010
  • Dezember 2009
  • November 2009
  • Oktober 2009
  • September 2009
  • August 2009
  • Juli 2009
  • Juni 2009
  • Mai 2009
  • April 2009
  • März 2009
Kategorien
  • Allgemein
  • Amateurfunk
  • Android
  • AVR
  • CNC
  • Computer & Technik
  • Datenleck
  • Games
  • Grafik
  • GSM
  • Hardware
  • Kniffe und Tricks
  • Linux
  • Mac
  • meshcore
  • Mikrokontroller
  • misc
  • Politik
  • Programmieren
  • Reviews
  • Software
  • Technik, Trends & News
  • Techniknews
  • Tools
  • Tutorial
  • Video
  • Webseiten
  • yvotd

Das hast du vielleicht versäumt

wetterGW2

Davis Vantage Pro2 im Smart Home: ein kürzerer Weg für die eigenen Wetterdaten

iang 10. Oktober 2026
ChatGPT-Bild-4.-Okt.-2026-18_58_22

ARISS/ISS-SSTV unter Ubuntu empfangen: SDRangel mit Doppler-Korrektur, PipeWire und QSSTV

iang 4. Oktober 2026
syno

Synology: Benutzerpasswort per SSH ändern

iang 9. September 2026
chirp

CHIRP-Unterstützung für den Yaesu FT-991A

iang 21. Juli 2026
Urheberrecht © Alle Rechte vorbehalten. | MoreNews von AF themes.