มี. NET / C # wrapper สำหรับ SQLite หรือไม่ [ปิด]


267

ฉันอยากจะใช้ SQLite จากใน C # .Net แต่ฉันไม่สามารถหาไลบรารี่ที่เหมาะสมได้ มีไหม อย่างเป็นทางการหรือไม่ มีวิธีอื่นในการใช้ SQLite มากกว่าด้วย wrapper หรือไม่?


4
นี่เป็นคำถามที่ซ้ำกัน: stackoverflow.com/questions/26020/…และมีคำตอบที่ต่างออกไป
Stewart Johnson

2
อันที่จริงฉันเชื่อว่าทั้งสองคำตอบได้รับการยอมรับเชื่อมโยงไปยังโครงการเดียวกัน
Colin

คำตอบ:


328

จากhttps://system.data.sqlite.org :

System.Data.SQLite เป็นอะแดปเตอร์ ADO.NET สำหรับ SQLite

System.Data.SQLite เริ่มต้นโดย Robert Simpson โรเบิร์ตยังคงมีสิทธิ์ใช้งานพื้นที่เก็บข้อมูลนี้ แต่ไม่ได้เป็นผู้สนับสนุนอีกต่อไป ตอนนี้งานพัฒนาและบำรุงรักษาส่วนใหญ่ดำเนินการโดยทีมพัฒนา SQLite ทีม SQLite มุ่งมั่นที่จะสนับสนุน System.Data.SQLite ในระยะยาว

"System.Data.SQLite เป็นเอ็นจิ้นฐานข้อมูล SQLite ดั้งเดิมและผู้ให้บริการ ADO.NET 2.0 ที่สมบูรณ์ทุกตัวรีดเป็นชุดประกอบแบบผสมเดี่ยวมันเป็นการแทนที่แบบแทนที่สมบูรณ์สำหรับ sqlite3.dll ดั้งเดิม (คุณสามารถเปลี่ยนชื่อเป็น sqlite3.dll) ต่างจากแอสเซมบลีผสมปกติไม่มีการพึ่งพาตัวเชื่อมโยงบนรันไทม์. NET ดังนั้นจึงสามารถแจกจ่ายได้โดยอิสระจาก. NET "

มันยังรองรับ Mono


33
นี่เป็นคำถามเก่า แต่ฉันต้องเพิ่ม $ 0.02 ของฉัน System.Data.SQLite หิน มันเป็นกลั่นเกรดที่มีเสถียรภาพและมีคุณภาพในเชิงพาณิชย์ เหนือสิ่งอื่นใดคือรหัสที่มีการจัดการ 100% และได้รับการเผยแพร่เป็นซอร์สโค้ดสาธารณะ
นาธานริดลีย์

4
เพื่อความมั่นคงเพียงเพราะผู้คนกำลังพูดถึงสิ่งต่าง ๆ ทั้งสองอย่าง ใน sqlite.phxsoftware.com คุณจะชี้ไปที่ sourceforge.net/projects/sqlite-dotnet2 สำหรับการดาวน์โหลด
yeyeyerman

16
wrapper นี้ไม่ได้ถูกพัฒนาโดยผู้เขียนดั้งเดิมอีกต่อไปและดูเหมือนว่า SQLite จะถูกยึดครองไปแล้ว เว็บไซต์ใหม่อยู่ที่ system.data.sqlite.org แต่ในขณะนี้ดูเหมือนว่าใช้งานง่ายกว่าและมีความคืบหน้าในการทำงานมากกว่าเมื่อเทียบกับต้นฉบับ
mikel

5
@NathanRidley - คุณแน่ใจหรือว่าได้รับการจัดการ 100% เพราะคำตอบนี้บอกว่า "System.Data.SQLite เป็นโปรแกรมฐานข้อมูล SQLite ดั้งเดิมและผู้ให้บริการ ADO.NET 2.0 ที่สมบูรณ์ทุกตัวรวมตัวกันในโหมดผสมเดี่ยว"
logicnp

2
FYI ฉันลองใช้แพ็คเกจ Microsoft.Data.Sqlite .NET Standard Nuget ของ Microsoft แต่มันล้มเหลวในการทดสอบการรวมกลุ่มในไลบรารี AsyncPoco Github หลังจากเปลี่ยนเป็น System.Data.SQLite ทุกอย่างทำงานได้อย่างสมบูรณ์
Lee Grissom



15

ผู้คนจาก sqlite.org ได้เข้ามามีส่วนร่วมในการพัฒนาผู้ให้บริการ ADO.NET:

จากหน้าแรกของพวกเขา :

นี่คือทางแยกของอะแดปเตอร์ ADO.NET 4.0 ยอดนิยมสำหรับ SQLite ที่รู้จักกันในชื่อ System.Data.SQLite ผู้ริเริ่มของ System.Data.SQLite, Robert Simpson ตระหนักถึงทางแยกนี้ได้แสดงความเห็นชอบของเขาและได้มอบสิทธิพิเศษให้กับที่เก็บ Fossil ใหม่ ทีมพัฒนา SQLite มุ่งมั่นที่จะรักษา System.Data.SQLite ก้าวไปข้างหน้า

เวอร์ชั่นที่ผ่านมารวมถึงฟอรัมสนับสนุนดั้งเดิมยังสามารถดูได้ที่ http://sqlite.phxsoftware.comแม้ว่าจะไม่มีการอัปเดตสำหรับเวอร์ชั่นนี้ตั้งแต่เดือนเมษายน 2010

รายการที่สมบูรณ์ของคุณสมบัติที่สามารถพบได้ที่เกี่ยวกับวิกิพีเดียของพวกเขา ไฮไลท์ ได้แก่

  • รองรับ ADO.NET 2.0
  • การสนับสนุน Entity Framework เต็มรูปแบบ
  • รองรับ Full Mono
  • Visual Studio 2005/2008 สนับสนุนขณะออกแบบ
  • Compact Framework, สนับสนุน C / C ++

กำลังปล่อยตัวสามารถดาวน์โหลดได้โดยตรงจากเว็บไซต์


DLLs สำเร็จรูปพร้อมใช้งานแล้วในตอนนี้
zomf

8

แน่นอนฉันจะไปกับSystem.Data.SQLite (ดังที่ได้กล่าวก่อนหน้านี้: http://sqlite.phxsoftware.com/ )

มันสอดคล้องกับ ADO.NET (System.Data. *) และรวบรวมเป็น DLL เดียว ไม่มี sqlite3.dll - เนื่องจากรหัส C ของ SQLite ฝังอยู่ภายใน System.Data.SQLite.dll เวทมนตร์ C ++ ที่ได้รับการจัดการเล็กน้อย


ลิงก์ปัจจุบันคือ 404
SqlACID

7

SQLite สุทธิเป็นแหล่งเปิดห้องสมุดน้อยที่สุดเพื่อช่วยให้การใช้งาน NET และโมโนในการเก็บข้อมูลในSQLite 3 ฐานข้อมูล ข้อมูลเพิ่มเติมได้ที่หน้าวิกิพีเดีย

มันถูกเขียนใน C # และมีวัตถุประสงค์เพื่อรวบรวมเพียงกับโครงการของคุณ มันถูกออกแบบมาเพื่อทำงานกับ MonoTouch บน iPhone เป็นครั้งแรก แต่ได้เติบโตขึ้นเพื่อทำงานบนแพลตฟอร์มทั้งหมด (Mono สำหรับ Android, .NET, Silverlight, WP7, WinRT, Azure และอื่น ๆ )

มีให้ใช้งานเป็นแพคเกจ Nugetซึ่งเป็นแพ็กเกจ SQLite ที่ได้รับความนิยมเป็นอันดับสองและมีการดาวน์โหลดมากกว่า 60,000 ครั้ง ณ ปี 2557

sqlite-net ได้รับการออกแบบให้เป็นเลเยอร์ฐานข้อมูลที่รวดเร็วและสะดวกสบาย การออกแบบดังต่อไปนี้จากเป้าหมายเหล่านี้:

  • ง่ายมากที่จะรวมเข้ากับโครงการที่มีอยู่และกับโครงการ MonoTouch
  • เครื่องห่อหุ้มบาง ๆ เหนือ SQLite และควรรวดเร็วและมีประสิทธิภาพ (ห้องสมุดไม่ควรเป็นปัญหาคอขวดของข้อสงสัย)
  • วิธีการที่ง่ายมากสำหรับการดำเนินการการดำเนินงาน CRUD และแบบสอบถามอย่างปลอดภัย (ใช้พารามิเตอร์) และการดึงผลลัพธ์ของแบบสอบถามเหล่านั้นในแบบที่พิมพ์
  • ทำงานกับโมเดลข้อมูลของคุณโดยไม่บังคับให้คุณเปลี่ยนคลาส (มีเลเยอร์ ORM ที่ใช้การสะท้อนขนาดเล็ก)
  • 0 การพึ่งพานอกเหนือจากรูปแบบที่คอมไพล์แล้วของไลบรารี sqlite2

ไม่ใช่เป้าหมายรวมถึง:

  • ไม่ใช่การติดตั้ง ADO.NET นี่ไม่ใช่ไดรเวอร์ SQLite ทั้งหมด หากคุณต้องการให้ใช้ System.Data.SQLite

ฉันสังเกตเห็นว่าความคิดเห็นส่วนใหญ่ก่อนหน้า 2014 กล่าวว่า System.Data.SQLite ซึ่งฉันพยายามติดตั้งบน Windows Store App ของฉัน (ไม่ทำงาน) งาน Sqlite-net
JeeShen Lee

2

Mono มาพร้อมกับเสื้อคลุม https://github.com/mono/mono/tree/master/mcs/class/Mono.Data.Sqlite/Mono.Data.Sqlite_2.0ให้รหัสเพื่อห่อ SQLite DLL จริง ( http: //www.sqlite org / sqlite-shell-win32-x86-3071300.zipพบได้ในหน้าดาวน์โหลดhttp://www.sqlite.org/download.html/ ) ในรูปแบบที่เป็นมิตรกับ. net มันทำงานบน Linux หรือ Windows

ดูเหมือนว่าจะบางที่สุดในโลกโดยลดการพึ่งพาห้องสมุดบุคคลที่สามให้เหลือน้อยที่สุด ถ้าฉันต้องทำโครงการนี้ตั้งแต่เริ่มต้นนี่เป็นวิธีที่ฉันจะทำ


2

Microsoft.Data.Sqlite

Microsoft ได้จัดเตรียมMicrosoft.Data.Sqliteเป็นโซลูชัน SQLite บุคคลที่หนึ่งสำหรับ. NET ซึ่งมีให้ในฐานะเป็นส่วนหนึ่งของ ASP.NET Core ใบอนุญาตเป็นApache License รุ่น 2.0

* ข้อจำกัดความรับผิดชอบ: ฉันยังไม่ได้ลองใช้ด้วยตัวเอง แต่มีเอกสารบางอย่างสำหรับ Microsoft Docs ที่นี่เพื่อใช้กับ. NET Core และ UWP


2

สำหรับคนอย่างฉันที่ไม่ต้องการหรือไม่ต้องการ ADO.NET ผู้ที่ต้องการรันโค้ดใกล้กับ SQLite แต่ยังเข้ากันได้กับnetstandard(. net framework, .net core ฯลฯ ) ฉันได้สร้าง โครงการโอเพนซอร์สฟรี 100% ชื่อSQLNado (สำหรับ "Not ADO") บน github ที่นี่:

https://github.com/smourier/SQLNado

มีให้บริการในรูปแบบ nuget ที่นี่https://www.nuget.org/packages/SqlNadoแต่ยังมีให้ใช้เป็นไฟล์. cs เดียวดังนั้นจึงเป็นประโยชน์ในการใช้กับโครงการ C # ทุกประเภท

รองรับฟีเจอร์ SQLite ทั้งหมดเมื่อใช้คำสั่ง SQL และยังสนับสนุนฟีเจอร์ SQLite ส่วนใหญ่ผ่าน. NET:

  • การแมปคลาสกับตารางอัตโนมัติ (บันทึก, ลบ, โหลด, โหลดทั้งหมด, LoadByPrimaryKey, LoadByForeignKey ฯลฯ )
  • การซิงโครไนซ์สกีมาโดยอัตโนมัติ (ตารางคอลัมน์) ระหว่างคลาสและตารางที่มีอยู่
  • ออกแบบมาเพื่อการทำงานที่ปลอดภัยต่อเธรด
  • สนับสนุนและสนับสนุนโดยนิพจน์ NETQ ที่ LINQ / IQueryable .NET (งานอยู่ในระหว่างดำเนินการในพื้นที่นี้) รวมถึงการสนับสนุนการเปรียบเทียบ
  • สกีมาฐานข้อมูล SQLite (ตารางคอลัมน์ ฯลฯ ) เปิดเผยกับ. NET
  • ฟังก์ชันที่กำหนดเองของ SQLite สามารถเขียนได้ใน. NET
  • BLOB I / O ที่เพิ่มขึ้นของ SQLite ถูกเปิดเผยเป็น. NET Stream เพื่อหลีกเลี่ยงการใช้หน่วยความจำสูง
  • รองรับการเรียงหน้า SQLite รวมถึงความเป็นไปได้ในการเพิ่มการเรียงหน้าแบบกำหนดเองโดยใช้รหัส. NET
  • การสนับสนุนเครื่องมือค้นหาข้อความแบบเต็มของ SQLite (FTS3) รวมถึงความเป็นไปได้ในการเพิ่มโทเค็น FTS3 แบบกำหนดเองโดยใช้รหัส. NET (เช่นคำหยุดที่แปลเป็นภาษาท้องถิ่น) ฉันไม่เชื่อว่า. NET wrappers อื่นทำเช่นนั้น
  • การสนับสนุนอัตโนมัติสำหรับ Windows 'winsqlite3.dll' (เฉพาะใน Windows รุ่นล่าสุด) เพื่อหลีกเลี่ยงการจัดส่งไฟล์การพึ่งพาไบนารีใด ๆ ใช้งานได้ใน Azure Web apps เช่นกัน!

0

Monotouch เวอร์ชั่น 1.2 ประกอบด้วยการรองรับ System.Data คุณสามารถค้นหารายละเอียดเพิ่มเติมได้ที่นี่: http://monotouch.net/Documentation/System.Data

แต่โดยทั่วไปจะช่วยให้คุณใช้รูปแบบ ADO .NET ปกติกับ sqlite


0

http://www.devart.com/dotconnect/sqlite/

dotConnect สำหรับ SQLite เป็นผู้ให้บริการข้อมูลที่ได้รับการปรับปรุงสำหรับ SQLite ที่สร้างบนเทคโนโลยี ADO.NET เพื่อนำเสนอโซลูชั่นที่สมบูรณ์สำหรับการพัฒนาแอปพลิเคชั่นฐานข้อมูลที่ใช้ SQLite ในฐานะที่เป็นส่วนหนึ่งของกรอบการพัฒนาแอพพลิเคชั่นฐานข้อมูล Devart นั้น dotConnect สำหรับ SQLite นำเสนอการเชื่อมต่อดั้งเดิมที่มีประสิทธิภาพสูงไปยังฐานข้อมูล SQLite และเครื่องมือและเทคโนโลยีการพัฒนาที่ล้ำสมัยจำนวนมาก

dotConnect สำหรับ SQLite แนะนำวิธีการใหม่สำหรับการออกแบบสถาปัตยกรรมแอปพลิเคชันเพิ่มประสิทธิภาพการทำงานและใช้ประโยชน์จากการใช้งานแอปพลิเคชันฐานข้อมูล

ฉันใช้รุ่นมาตรฐานมันใช้งานได้ดี :)


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.