最近在使用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>