SQLite-Datenbank und -Tabelle erstellen [geschlossen]

150

Innerhalb des C # -Anwendungscodes möchte ich eine oder mehrere SQLite-Datenbanken erstellen und dann mit diesen interagieren.

Wie initialisiere ich eine neue SQLite-Datenbankdatei und öffne sie zum Lesen und Schreiben?

Wie führe ich nach der Erstellung der Datenbank eine DDL-Anweisung aus, um eine Tabelle zu erstellen?

Tinker Bell
quelle

Antworten:

290

Der nächste Link bringt Sie zu einem großartigen Tutorial, das mir sehr geholfen hat!

SQLITE in C #

Ich habe fast alles in diesem Artikel verwendet, um die SQLite-Datenbank für meine eigene C # -Anwendung zu erstellen.

Vergessen Sie nicht, die Datei SQLite.dll herunterzuladen und als Referenz zu Ihrem Projekt hinzuzufügen. Dies kann mit NuGet und durch manuelles Hinzufügen der DLL erfolgen.

Nachdem Sie die Referenz hinzugefügt haben, verweisen Sie in der folgenden Zeile über Ihrer Klasse auf die DLL aus Ihrem Code:

using System.Data.SQLite;

Die DLLs finden Sie hier:

SQLite-DLLs

Den NuGet-Weg finden Sie hier:

NuGet

Als nächstes folgt das Erstellungsskript. Erstellen einer Datenbankdatei:

SQLiteConnection.CreateFile("MyDatabase.sqlite");

SQLiteConnection m_dbConnection = new SQLiteConnection("Data Source=MyDatabase.sqlite;Version=3;");
m_dbConnection.Open();

string sql = "create table highscores (name varchar(20), score int)";

SQLiteCommand command = new SQLiteCommand(sql, m_dbConnection);
command.ExecuteNonQuery();

sql = "insert into highscores (name, score) values ('Me', 9001)";

command = new SQLiteCommand(sql, m_dbConnection);
command.ExecuteNonQuery();

m_dbConnection.Close();

Nachdem Sie ein Erstellungsskript in C # erstellt haben, möchten Sie möglicherweise Rollback-Transaktionen hinzufügen. Dies ist sicherer und verhindert, dass Ihre Datenbank ausfällt, da die Daten am Ende in einem großen Teil als atomare Operation für die Datei festgeschrieben werden Datenbank und nicht in kleinen Stücken, wo es zum Beispiel bei 5. von 10 Abfragen fehlschlagen könnte.

Beispiel für die Verwendung von Transaktionen:

 using (TransactionScope tran = new TransactionScope())
 {
     //Insert create script here.

     //Indicates that creating the SQLiteDatabase went succesfully, so the database can be committed.
     tran.Complete();
 }
Max
quelle
5
Schöne klare Antwort. + 1'd. Hier ist ein weiteres Beispiel, das Ihnen zeigt, wie schnell SQLite beim Einfügen und Abrufen von Datensätzen sein kann: Technical-recipes.com/2016/using-sqlite-in-c-net-environments
AndyUK
In meinem Test System.Transactions.TransactionScopefunktioniert die Verwendung nicht wie erwartet, sondern wird ExecuteNonQuerysofort ausgeführt und nicht alle zusammen SQLiteTransaction. Warum verwenden TransactionScope?
MrCalvin
1
Ich bevorzuge SQLiteTransaction tr = m_dbConnection.BeginTransaction(); SQLiteCommand command = new SQLiteCommand(...); command.Transaction = tr;die Verwendung vonTransactionScope
user643011