Tạo cơ sở dữ liệu SQLite và bảng [đã đóng]


150

Trong mã ứng dụng C #, tôi muốn tạo và sau đó tương tác với một hoặc nhiều cơ sở dữ liệu SQLite.

Làm cách nào để tôi khởi tạo tệp cơ sở dữ liệu SQLite mới và mở tệp để đọc và viết?

Theo cách tạo của cơ sở dữ liệu, làm cách nào để thực thi câu lệnh DDL để tạo bảng?

Câu trả lời:


290

Liên kết tiếp theo sẽ đưa bạn đến một hướng dẫn tuyệt vời, điều đó đã giúp tôi rất nhiều!

Cách SQLITE trong C #

Tôi gần như đã sử dụng mọi thứ trong bài viết đó để tạo cơ sở dữ liệu SQLite cho Ứng dụng C # của riêng tôi.

Đừng quên tải xuống SQLite.dll và thêm nó làm tài liệu tham khảo cho dự án của bạn. Điều này có thể được thực hiện bằng NuGet và bằng cách thêm dll thủ công.

Sau khi bạn thêm tham chiếu, hãy tham khảo dll từ mã của bạn bằng cách sử dụng dòng sau trên đầu lớp của bạn:

using System.Data.SQLite;

Bạn có thể tìm thấy dll ở đây:

DLL của SQLite

Bạn có thể tìm thấy cách NuGet ở đây:

NuGet

Tiếp theo là kịch bản tạo. Tạo một tệp cơ sở dữ liệu:

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

Sau khi bạn tạo tập lệnh tạo trong C #, tôi nghĩ rằng bạn có thể muốn thêm các giao dịch rollback, nó an toàn hơn và nó sẽ giữ cho cơ sở dữ liệu của bạn không bị lỗi, bởi vì dữ liệu sẽ được cam kết ở một phần lớn như một hoạt động nguyên tử cho cơ sở dữ liệu và không phải là một phần nhỏ, nơi nó có thể thất bại ở 5 trong số 10 truy vấn chẳng hạn.

Ví dụ về cách sử dụng giao dịch:

 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
Đẹp trả lời rõ ràng. + 1'd. Dưới đây là một ví dụ cho thấy bạn như thế nào nhanh chóng SQLite có thể ở chèn và lấy hồ sơ: technical-recipes.com/2016/using-sqlite-in-c-net-environments
AndyUK

Trong thử nghiệm của tôi, sử dụng System.Transactions.TransactionScopekhông hoạt động như mong đợi, nó sẽ thực hiện mọi thứ ExecuteNonQueryngay lập tức và không phải tất cả cùng nhau, như SQLiteTransaction. Tại sao nên sử dụng TransactionScope?
MrCalvin

1
Tôi thích SQLiteTransaction tr = m_dbConnection.BeginTransaction(); SQLiteCommand command = new SQLiteCommand(...); command.Transaction = tr;sử dụng hơnTransactionScope
user643011
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.