สร้างฐานข้อมูลและตาราง SQLite [ปิด]


150

ภายในโค้ดแอปพลิเคชัน C # ฉันต้องการสร้างและโต้ตอบกับฐานข้อมูล SQLite หนึ่งฐานขึ้นไป

ฉันจะเริ่มต้นไฟล์ฐานข้อมูล SQLite ใหม่และเปิดมันสำหรับการอ่านและการเขียนได้อย่างไร?

หลังจากการสร้างฐานข้อมูลฉันจะรันคำสั่ง DDL เพื่อสร้างตารางได้อย่างไร

คำตอบ:


290

ลิงค์ต่อไปจะนำคุณไปสู่การสอนที่ยอดเยี่ยมซึ่งช่วยฉันได้มาก!

วิธีการ SQLITE ใน C #

ฉันเกือบจะใช้ทุกอย่างในบทความนั้นเพื่อสร้างฐานข้อมูล SQLite สำหรับแอปพลิเคชัน C # ของฉันเอง

อย่าลืมดาวน์โหลด SQLite.dll และเพิ่มเป็นข้อมูลอ้างอิงกับโครงการของคุณ ซึ่งสามารถทำได้โดยใช้NuGetและโดยการเพิ่ม dll ด้วยตนเอง

หลังจากที่คุณเพิ่มการอ้างอิงให้อ้างถึง dll จากรหัสของคุณโดยใช้บรรทัดต่อไปนี้ที่ด้านบนของชั้นเรียนของคุณ:

using System.Data.SQLite;

คุณสามารถค้นหา dll ของที่นี่:

DLL ของ SQLite

คุณสามารถหาวิธี NuGet ได้ที่นี่:

NuGet

ถัดไปคือสคริปต์สร้าง การสร้างไฟล์ฐานข้อมูล:

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 # ฉันคิดว่าคุณอาจต้องการเพิ่มธุรกรรมย้อนกลับมันปลอดภัยมากขึ้นและจะทำให้ฐานข้อมูลของคุณล้มเหลวเนื่องจากข้อมูลจะถูกส่งไปที่ส่วนท้ายในการดำเนินการปรมาณูหนึ่งชิ้น ฐานข้อมูลและไม่ใช่ชิ้นเล็ก ๆ ซึ่งอาจล้มเหลวเมื่อวันที่ 5 ใน 10 การสืบค้น

ตัวอย่างเกี่ยวกับวิธีใช้ธุรกรรม:

 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
คำตอบที่ชัดเจนดี +1 นี่คืออีกตัวอย่างที่แสดงให้คุณเห็นว่า SQLite แบบรวดเร็วสามารถแทรกและดึงข้อมูลได้อย่างไร: technical-recipes.com/2016/using-sqlite-in-c-net-environment
AndyUK

ในการทดสอบของฉันโดยใช้System.Transactions.TransactionScopeไม่ได้ทำงานตามที่คาดไว้ก็จะดำเนินการทุกทันทีและไม่ได้ทั้งหมดเข้าด้วยกันเป็นExecuteNonQuery SQLiteTransactionทำไมต้องใช้TransactionScope?
MrCalvin

1
ฉันชอบSQLiteTransaction tr = m_dbConnection.BeginTransaction(); SQLiteCommand command = new SQLiteCommand(...); command.Transaction = tr;ใช้มากกว่าTransactionScope
user643011
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.