Du bist nicht angemeldet.

[VB 2008] Sqlite

Tsuyo

Registrierter Benutzer

  • »Tsuyo« ist der Autor dieses Themas

Beiträge: 804

Dabei seit: 10. Oktober 2009

Wohnort: k

Frühere Benutzernamen: m0nst3rkill3r

Hilfreich-Bewertungen: 257

  • Private Nachricht senden

1

Montag, 25. Januar 2010, 02:22

Sqlite

Hi, Ich hab für mein Programm nach einer simplen Datenbank gesucht. Wofür man keine "Overkill" Datenbank braucht die 50mb hat und einen Server.
Sqlite kannte ich schon früher und hab direkt danach gegoogled.
Hier eine kleine Einführung:
Also. Sqllite ist eine Datenbank, die in einer einzigen Datei gespeichert wird. Jedoch fast genauso gehandhabt wird wie Mysql.
Ich arbeite mit: http://sqlite.phxsoftware.com/
Der Anfang:
Man kann eine Sqllite datenbank so erstellen:

Visual Basic Quellcode

1
2
3
4
                Dim connect As New SQLite.SQLiteConnection()
                connect.ConnectionString = "Data Source=user.s3db;"
                connect.Open()
                connect.Close()

Det' war's.
Ihr solltet nun eine "user.s3db" in eurem debugordner finden.
Datenbank befüllen
Eine Datenbank ohne einträge oder Tabellen hat natürlich keinen Sinn... also erstellen wir mal eine Tabelle.
Denkt daran das die obere Connection der "Dateierstellung" in der gleichen sub sein muss.
Für jeden Query der erstellt wird, wird eine Connection benötigt!

Visual Basic Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
                Dim connect As New SQLite.SQLiteConnection()
                Dim command as SQLiteCommand
                connect.ConnectionString = "Data Source=user.s3db;"
                connect.Open()
                connect.Close()

                connect.Open()
                command = connect.CreateCommand
                command.CommandText = "CREATE TABLE user(id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT);" 'Die Query
                command.ExecuteNonQuery() ' Die Query wird ausgeführt
                command.Dispose() 
                connect.Close() 'Schließen

Wir haben eine Tabelle erstellt mit namen "user", und den Spalten id(Auto Increment) und name.
Benutzen:

Eine Datenbank will man natürlich benutzen.
Hier mal ein paar Codebeispiele:
Eintragen:

Visual Basic Quellcode

1
command.CommandText = "INSERT INTO user (name) VALUES ('Tsuyo')"

Jetzt kommt der Gag: id muss nicht hochgezählt werden da es Auto Increment beinhaltet :> also spart man sich schonmal einen Eintrag.
Die Prozedur ist wie bei der Create Table Query das gleiche...

Löschen:

Visual Basic Quellcode

1
command.CommandText = "DELETE FROM user WHERE id ='1' "

Sollte selbsterklärend sein.

Ausgabe:
In der Ausgabe, also "SELECT" muss eine Whileschleife benutzt werden um an alle daten ranzukommen. Ausserdem ist der Ablauf etwas anders.

Visual Basic Quellcode

1
command.CommandText = "SELECT id,user FROM user"

Bis hier ist es noch das gleiche.

Visual Basic Quellcode

1
command.ExecuteNonQuery()
Entfällt und wird mit:

Visual Basic Quellcode

1
Dim SQLreader As SQLiteDataReader = command.ExecuteReader()

ersetzt.
Ab jetzt wird in der while schleife gearbeitet:

Visual Basic Quellcode

1
2
3
4
While SQLreader.Read()
'Man ruft die einträge mit sqlreader(zahl) aus... zahl steht für die jeweilige tabellenspalte. Also sqlreader(0) gibt id aus, sqlreader(1) gibt den namen aus.
messagebox.show("Der Benutzer: " & sqlreader(1) & " hat die ID: " & sqlreader(0))
End While

Am ende

Visual Basic Quellcode

1
2
            command.Dispose()
            connection.Close()

Nicht vergessen :)

Schönen tag noch!

Zitat von »"http://forums.macrumors.com/showpost.php?s=9e0078570b2b62fd044cc1b13d212b09&p=4777525&postcount=1064"«

When talking about how apple cannot influence the future of computers, you also forgot to mention that the internet was created on a network of macs to start with. Thats why every online PeeCee has a MAC code. Even my PSP needs a MAC code to get online....
~2000€ für nen brauchbaren Mac sind imho 2100€ zu viel. - SamusTyp

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Tsuyo« (9. Februar 2011, 14:06)


Es haben bereits 4 registrierte Benutzer diesen Beitrag als hilfreich eingestuft.

Benutzer, die diesen Beitrag hilfreich fanden:

Morphesus, tybae, Lawliet, ErfinderDesRades

T1g0r

Registrierter Benutzer

Beiträge: 1 226

Dabei seit: 31. Januar 2007

Hilfreich-Bewertungen: 7

  • Private Nachricht senden

2

Mittwoch, 10. Februar 2010, 16:02

Zu SQLite sollte noch gesagt werden, das man für x64 eine andere dll benutzen muss, als für x86 Systeme.
Das geht aus dem Link oben nicht so ganz hervor.
www.wintoolz.de
  • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
  • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
  • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

Benutze auch du Ecosia

ING

Registrierter Benutzer

  • »ING« ist männlich

Beiträge: 164

Dabei seit: 14. Juni 2009

Hilfreich-Bewertungen: 1

  • Private Nachricht senden

3

Freitag, 12. Februar 2010, 12:54

Die dll wird doch vom Framework bereitgestellt, oder? und wenn das installiert ist, dann musst du doch keine dll mehr mitgeben...
Schöne Grüße

ING


Das Wort für heute: Qios statt Krypton! Warum? Weils besser ist!

T1g0r

Registrierter Benutzer

Beiträge: 1 226

Dabei seit: 31. Januar 2007

Hilfreich-Bewertungen: 7

  • Private Nachricht senden

4

Samstag, 13. Februar 2010, 14:29

Aha. Wäre mir neu.
Würde mich aber intresieren, ob das so ist. Vielleicht weis jemand mehr darüber.
www.wintoolz.de
  • wintoolz.KeyLocker - Programm zum sicheren Verwalten von Passwörten
  • wintoolz.CodeGallery - Datenbank für Codebeispiele veschiedener Programmiersprachen
  • wintoolz.Haushaltsbuch - Dient zum Auflisten der Aktivitäten ihrer Bankkonten

Benutze auch du Ecosia

Tsuyo

Registrierter Benutzer

  • »Tsuyo« ist der Autor dieses Themas

Beiträge: 804

Dabei seit: 10. Oktober 2009

Wohnort: k

Frühere Benutzernamen: m0nst3rkill3r

Hilfreich-Bewertungen: 257

  • Private Nachricht senden

5

Montag, 15. Februar 2010, 18:39

Wenn man den installer installiert hat, muss man die dll nur mitgeben. Selber braucht man sie nicht.

Zitat von »"http://forums.macrumors.com/showpost.php?s=9e0078570b2b62fd044cc1b13d212b09&p=4777525&postcount=1064"«

When talking about how apple cannot influence the future of computers, you also forgot to mention that the internet was created on a network of macs to start with. Thats why every online PeeCee has a MAC code. Even my PSP needs a MAC code to get online....
~2000€ für nen brauchbaren Mac sind imho 2100€ zu viel. - SamusTyp

Grimsey

Registrierter Benutzer

  • »Grimsey« ist männlich

Beiträge: 6

Dabei seit: 10. Juni 2010

Wohnort: Plauen

  • Private Nachricht senden

6

Montag, 7. Februar 2011, 21:15

Hallo Tsuyo,

vielen Dank für Deinen kurzen und verständlichen Einblick in SQLite.
Bei mir hat es nach einigen Einstellungen auch fast gleich funktioniert (beim Erstellen auf "Any" und Framework 3.5 stellen und schon gings).

Eine Anmerkung/Frage habe ich jedoch:
1. müsste die SELECT-Anweisung nicht

Visual Basic Quellcode

1
 command.CommandText = "SELECT id,name FROM user"
lauten? Die angebebene DB "Kunden" gibt es im Tutorial nicht.
2. die Verknüpfung bei der Ausgabe der MessageBox müssten doch eigentlich mit & anstatt mit + verbunden sein, oder?
3. gibt es eine Möglichkeit die Tabelle in einem Designer anzeigen zu lassen oder zu bearbeiten?? Oder gar mit einem DataGridView?

Vielen Dank für die klasse Arbeit die Du hier gemacht hast!

TTX.exe

Registrierter Benutzer

  • »TTX.exe« ist männlich

Beiträge: 73

Dabei seit: 28. Januar 2011

Wohnort: localhost

Hilfreich-Bewertungen: 20

  • Private Nachricht senden

7

Mittwoch, 9. Februar 2011, 00:03

Zu SQLite sollte noch gesagt werden, das man für x64 eine andere dll benutzen muss, als für x86 Systeme.
Das geht aus dem Link oben nicht so ganz hervor.
Nein muss man nicht, ich progge atm. auch an einem Projekt das eine SQL-Lite DB hat und die DLL funktioniert einwandfrei auf XP, Vista, W7-x86 und W7-x64..darauf habe ich meine Software bisher ohne Probleme getestet, einziger Faktor ist, die DLL läuft nicht mit .NET4.
Cuma (Kundenverwaltung - DB-Design): 4%

Fonsi

Registrierter Benutzer

  • »Fonsi« ist männlich

Beiträge: 201

Dabei seit: 13. Oktober 2009

Frühere Benutzernamen: Osiris85

Hilfreich-Bewertungen: 16

  • Private Nachricht senden

8

Mittwoch, 9. Februar 2011, 08:26

Du kannst die Tabelle ganz normal in ein DataGridView laden. Für SQLite gibts aber auch den SQLite Database Browser oder ein Firefox-Addon zur grafischen Verwaltung der Datenbank.

Chars und Strings werden in VB mit dem &-Operator verbunden oder mit

Visual Basic Quellcode

1
String.Concat()
Codenascher und Programmator :whistling: ... steigt auf C# um!

[Langzeitprojekt] ELENA - Hausautomatisierung und Infotainment-Center

Tsuyo

Registrierter Benutzer

  • »Tsuyo« ist der Autor dieses Themas

Beiträge: 804

Dabei seit: 10. Oktober 2009

Wohnort: k

Frühere Benutzernamen: m0nst3rkill3r

Hilfreich-Bewertungen: 257

  • Private Nachricht senden

9

Mittwoch, 9. Februar 2011, 14:05

Hey, danke für deine Rückmeldung.

Du hast recht, Strings sollte man immer mit & verketten. Zu der Zeit war ich nicht wirklich in VB.NET drin, und hab mehr meine Kenntnisse aufgeschrieben.
Die SELECT Anweisung müsste dann natürlich auch geändert werden. Ich änder das natürlich gleich.

Eine Tabelle im Designer bearbeiten ist nicht möglich, jedenfalls ist mir kein Weg bekannt. Es gibt aber kleine Tools die SQLite Datenbanken beschreiben können.
Mein Favorit ist dieser: http://sqliteadmin.orbmu2k.de/

Zitat von »"http://forums.macrumors.com/showpost.php?s=9e0078570b2b62fd044cc1b13d212b09&p=4777525&postcount=1064"«

When talking about how apple cannot influence the future of computers, you also forgot to mention that the internet was created on a network of macs to start with. Thats why every online PeeCee has a MAC code. Even my PSP needs a MAC code to get online....
~2000€ für nen brauchbaren Mac sind imho 2100€ zu viel. - SamusTyp

GambaJo

Einäugiger unter den Blinden

  • »GambaJo« ist männlich

Beiträge: 223

Dabei seit: 20. Oktober 2010

Hilfreich-Bewertungen: 64

  • Private Nachricht senden

10

Donnerstag, 10. Februar 2011, 09:02

Eine Tabelle im Designer bearbeiten ist nicht möglich, jedenfalls ist mir kein Weg bekannt.


Wut?
Lerne und staune!


Es gibt aber kleine Tools die SQLite Datenbanken beschreiben können.
Mein Favorit ist dieser: http://sqliteadmin.orbmu2k.de/[/quote]

SQL-Manager als Firefox-Addon

nikeee13

wegen des metrischen Systems

  • »nikeee13« ist männlich

Beiträge: 866

Dabei seit: 20. Februar 2009

Wohnort: Einbecker Bier!

Hilfreich-Bewertungen: 529

  • Private Nachricht senden

11

Freitag, 11. Februar 2011, 21:52

Nein muss man nicht, ich progge atm. auch an einem Projekt das eine SQL-Lite DB hat und die DLL funktioniert einwandfrei auf XP, Vista, W7-x86 und W7-x64..darauf habe ich meine Software bisher ohne Probleme getestet, einziger Faktor ist, die DLL läuft nicht mit .NET4.
Ersteinmal sei gesagt: es ist völlig gleich, ob die DLL auf XP, Vista oder 7 benutzt wird (außer, es steht explizit dabei, ist hier aber nich der Fall). Das, was zählt, ist die Prozessorarchitektur. x86 oder x64 mehr nicht.
Bei HolzShots gab es wegen der SQLite-Anbindung viele Bugreports von x64-Benutzern. Ich selber habe zwar auch ein x64-System, habe den Fehler aber nicht bekommen, weil ich beide Assemblies registriert habe (x86 und x64). Eine Lösung des Problems wäre, das Hostprogramm nur für x86 zu kompilieren. Dadurch kann das x64-System noch das x86-Subsystem benutzen.
Eine andere Lösung wäre es, 2 seperat kompilierte Assemblies herauszubringen. Eine Lösung mit AnyCPU ist mir nicht bekannt, kann aber existieren.

Wenn man das Ganze umgehen will, kann man auch MS Access Databases nehmen.

Die dll wird doch vom Framework bereitgestellt, oder? und wenn das installiert ist, dann musst du doch keine dll mehr mitgeben...
Nein, SQLite ist nicht im Framework implementiert. Da SQLite nicht von Microsoft ist, wird das auch wohl nie der Fall sein. Allerdings sind MS Access Databases im Framework intigriert. Diese sind ebenfalls Dateibasiert, nur von Microsoft.
Mehr dazu hier: http://devcity.net/Articles/215/1/article.aspx und hier: http://msdn.microsoft.com/en-us/library/…b(v=vs.71).aspx

Social Bookmarks