SQLite Veritabanı ve tablosu oluşturma [kapalı]


150

C # uygulama kodu içinde, oluşturmak ve daha sonra bir veya daha fazla SQLite veritabanı ile etkileşimde bulunmak istiyorum.

Yeni bir SQLite veritabanı dosyasını nasıl başlatabilir ve okumak ve yazmak için nasıl açabilirim?

Veritabanının oluşturulmasını takiben, bir tablo oluşturmak için bir DDL deyimini nasıl yürütebilirim?

Yanıtlar:


290

Bir sonraki bağlantı, bana çok yardımcı olan harika bir eğiticiye getirecek!

C # SQLITE nasıl

Neredeyse bu makaledeki her şeyi kendi C # Uygulamam için SQLite veritabanı oluşturmak için kullandım.

SQLite.dll dosyasını indirmeyi ve projenize bir referans olarak eklemeyi unutmayın. Bu, NuGet kullanılarak ve dll'yi manuel olarak ekleyerek yapılabilir .

Referansı ekledikten sonra, sınıfınızın üst kısmında aşağıdaki satırı kullanarak kodunuzdaki dll'ye bakın:

using System.Data.SQLite;

Dll'leri burada bulabilirsiniz:

SQLite DLL'leri

NuGet'in yolunu burada bulabilirsiniz :

Nuget

Sıradaki komut dosyası oluştur. Bir veritabanı dosyası oluşturma:

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();

C # içinde bir oluşturma komut dosyası oluşturduktan sonra, geri alma işlemleri eklemek isteyebileceğinizi düşünüyorum, daha güvenli ve veritabanınızın başarısız olmasını önleyecektir, çünkü veriler atomik işlem olarak büyük bir parçada sonlandırılacaktır. veritabanı ve küçük parçalar halinde değil, örneğin 10 sorgunun 5'inde başarısız olabilir.

İşlemlerin nasıl kullanılacağına ilişkin örnek:

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

     //Indicates that creating the SQLiteDatabase went succesfully, so the database can be committed.
     tran.Complete();
 }

5
Güzel açık cevap. + 1'lediğini. SQLite'ın kayıt ekleme ve almada ne kadar hızlı olabileceğini gösteren başka bir örnek: Technical-recipes.com/2016/using-sqlite-in-c-net-environments
AndyUK 15:17

Testlerimde System.Transactions.TransactionScopebeklediğim gibi çalışmaz, her seferinde ExecuteNonQuerybirlikte değil, hemen uygulanır SQLiteTransaction. Neden kullanılmalı TransactionScope?
MrCalvin

1
SQLiteTransaction tr = m_dbConnection.BeginTransaction(); SQLiteCommand command = new SQLiteCommand(...); command.Transaction = tr;Kullanmayı tercih ederimTransactionScope
user643011
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.