背景
最近项目上需要在C#的WPF程序上使用SQLite作为本地数据库使用,无奈本人才疏学浅,查阅网上N多资料后,不断的重复试验,终于连接上SQLite数据库了,真是喜大普奔啊!今晚应该加个鸡腿!
基本工作
-
准备SQLite相关的安装包
- 资源网站: SQLite官网下载合适的.NET Framework的SQLite包,有必要的话可能需要安装C++库,官网也有提供。官网链接:点我吧!
- 注意:下载好的SQLite包中一定要包含 SQLite.Interop.dll。
-
新建一个WPF项目
这里就不阐述如何创建一个WPF项目了。
-
使用Nuge包下载需要的DLL库
-
配置App.config,配置数据库ConnectionString
基本的节点按照如下配置基本可行,只需要替换DataSource源的位置即可!
<?xml version="1.0" encoding="utf-8"?> <configuration> <configSections> <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --> <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false"/> </configSections> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2"/> </startup> <entityFramework> <providers> <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/> <provider invariantName="System.Data.SQLite.EF6" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6"/> <provider invariantName="System.Data.SQLite" type="System.Data.SQLite.EF6.SQLiteProviderServices, System.Data.SQLite.EF6"/> </providers> </entityFramework> <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"/> <remove invariant="System.Data.SQLite.EF6"/> <add name="SQLite Data Provider (Entity Framework 6)" invariant="System.Data.SQLite.EF6" description=".NET Framework Data Provider for SQLite (Entity Framework 6)" type="System.Data.SQLite.EF6.SQLiteProviderFactory, System.Data.SQLite.EF6"/> </DbProviderFactories> </system.data> <connectionStrings> <add name="DatabaseContext" connectionString="Data Source=.\Assets\Database\Cache.db" providerName="System.Data.SQLite.EF6"/> </connectionStrings> </configuration>
-
编写数据库实体类以及DbContext类
此处我Cache.db存储了两张表,如图:
-
新建实体类:
[Table("tb_upload_status_info")] class UploadStatusInfo { [Key] [Column("id")] public int Id { set; get; } [Column("description")] public string Description { set; get; } // // [Column("createTime")] // public long? CreateTime; }
-
新建DbContext的继承类
class DatabaseContext : DbContext { public DbSet<UploadStatusInfo> UploadStatusInfos { set; get; } }
在这里,数据库初始化操作开始后会自动给UploadStatusInfos赋值。
-
-
测试数据库的连接和效果
现在开始编写一段测试代码:
DatabaseContext ctx = new DatabaseContext(); try { DbSet<UploadStatusInfo> dataSet = ctx.UploadStatusInfos; var info = dataSet.Where((statusInfo => statusInfo.Id == 1)).ToList(); MessageBox.Show(JsonFormatter.SerializeObject(info)); } catch (Exception e) { MessageBox.Show(e.ToString()); } finally { ctx.Dispose(); }
结果输出:
恭喜您,您已经学会如何使用SQLite数据库了!