事先声明几点:
1. 使用 VS2017, 以前的版本大多老旧, 不想折腾就直接上 VS2017吧;
2. VS2017 在安装时必须选择 .net core 相关组件, 否则也没办法;
3. 以前的那个 System.Data.SQLite 没法在 .net core 下用了。
言归正传:
一、新建项目:
二、在“程序包管理器控制台”下输入:
install-package Microsoft.EntityFrameworkCore.Sqlite.Core
install-package SQLitePCLRaw.bundle_green
三、正式的代码:
using Microsoft.Data.Sqlite; using System; using System.Data; namespace ConsoleApp7 { class Program { static void Main(string[] args) { string connString = "Data Source=dapperTest.db"; string sql = @"drop table if exists userInfo; create table userInfo( userInfo int primary key, userName nvarchar(50) ); insert into userInfo values(1,'小明'); insert into userInfo values(2,'小红'); "; string sql2 = "select * from userInfo"; try { using (SqliteConnection conn = new SqliteConnection(connString)) { conn.Open(); SqliteCommand cmd = new SqliteCommand(sql, conn); cmd.ExecuteNonQuery(); cmd.CommandText = sql2; SqliteDataReader dr = cmd.ExecuteReader(); while (dr.Read()) { Console.WriteLine("UserId:{0}\tUserName:{1}", dr[0], dr[1]); } } } catch (Exception ex) { Console.WriteLine(ex.Message); } Console.WriteLine("End."); Console.Read(); } } }
是不是很简单?
其实也绕了不少弯子, 主要是包的引用都是自己想办法试出来的, 目前的资料还是比较少。
另外, 返回的值, sqlite 中定义为 int 的, 返回值却是 long 等待, 不一定能完全对应上。
如果你手工给对象赋值, 可能没有什么问题, 但如果用反射就得注意了。