最近在使用SQLite數據庫作為C#項目的數據源,填了幾天坑,終於快把坑填完了。今天簡單的記下操作步驟以便以后查找使用。
工具:SQLite Expert Personal 3,Microsoft Visual Studio 2010,System.Data.SQLite.DLL,System.Data.SQLite.Linq.DLL。運行環境 .NET 4.0。
System.Data.SQLite分x64(64位)和x86(32位),下載地址 http://www.xdowns.com/soft/184/dll/2014/Soft_127218.html 或者 http://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki
下面介紹一種配置方式
首先新建一個 Windows窗體項目,引用System.Data.SQLite,添加一個APP.config或者Web.config配置文件。connectionString="Product.db",Product.db是SQLite創建的數據庫,存放在項目的 bin\Debug 目錄下。Web.config(APP.config)的配置如下圖。
<?xml version="1.0" encoding="utf-8" ?> <configuration> <startup useLegacyV2RuntimeActivationPolicy="true"> <supportedRuntime version="v4.0" sku = ".NETFramework,Version=v4.0"/> <supportedRuntime version="v2.0.50727"/> </startup> <connectionStrings> <add name="SQLiteDB" connectionString="Product.db" /> </connectionStrings> <system.data> <DbProviderFactories> <remove invariant="System.Data.SQLite"/> <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory,System.Data.SQLite, Version=1.0.94.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" /> </DbProviderFactories> </system.data> </configuration>
新建一個文件夾Service, 新建一個類,類名 ConfigService放在,配置信息如下圖。
public class ConfigService { public static string ConnectionString { get { return "Data Source=" + AppDomain.CurrentDomain.BaseDirectory + ConfigurationManager.ConnectionStrings["SQLiteDB"].ConnectionString; } } }
新建productService類
public class ProductService { public static readonly ProductService Instance = new ProductService(); private static string connstr = ConnectionString.ConnectionStrings; public bool Insert(String product) { SQLiteConnection conn = null; int num = 0; int productNum=10; try { conn = new SQLiteConnection(connstr); conn.Open(); string sql = "Insert into product values(@product,@productNum)"; SQLiteParameter[] parameter = { new SQLiteParameter("@product",product),new SQLiteParameter("@productNum",productNum)}; SQLiteCommand cmd = new SQLiteCommand(sql,conn); cmd.Parameters.AddRange(parameter); num=cmd.ExecuteNonQuery(); } catch(Exception ex) { return false; } if (num > 0) return true; else return false; } }
這樣一個簡單的插入語句也就寫好了。
當然,在上述的APP.config中,我們也可以用下圖中的 connectionString配置取代上面的connectionString的配置。那么,我們就不再需要ConfigService這個類去轉化。相應的,我們在productService中的配置也要發生變化,需要將 private static string connstr = ConnectionString.ConnectionStrings; 這段代碼切換成 private static string connstr = ConfigurationManager.ConnectionStrings["SQLiteDB"].ConnectionString;
<connectionStrings> <add name="SQLiteDB" connectionString="Data Source=Product.db"/> </connectionStrings>