csharp使用sqlite数据库
起因
昨天在给同学写demo.考虑跨平台使用,因为是demo无需考虑压力,数据库采用Sqlite.真正在项目中是没有使用过Sqlite的.最早一次使用的,还是在14或者15年,在学习c语言的时候.- 项目基于.Net Framework 4.5,但使用的Mono的程序集,主要是避免.Net Framework程序集依赖Windows特性.为了无缝迁移Linux.
- 采用Nancy轻量级MVC框架,为什么没有使用Asp.Net Core 2.X,主要是对Sqlite支持不太好.
- 数据库使用Sqlite,轻量,不需要像SqlServer/MySql安装.考虑到需求简单.
- 服务器软件使用TinyFox,轻量,基于Libuv跨平台.
C#上手Sqlite
因考虑到程序集移植问题.使用Mono的程序集,Mono.Data.Sqlite.dll.只使用这个程序集是不行的.在该程序集是有依赖的.使用ILSpy.查看有依赖本地Navtive动态库或者共享库,在C#程序中,就需要针对性区分32位或者64了.
sqlite3.dll 下载地址:http://www.sqlite.org/download.html
sqlite管理工具,这里使用的SQLiteStudio.可以手动修改数据表,对数据进行增删改查,很方便.
代码
using System;
using System.IO;
using Mono.Data.Sqlite;
namespace SqliteApp
{
class Program
{
static void Main(string[] args)
{
string dbFile = "test.db";
if (File.Exists(dbFile))
{
File.Delete(dbFile);
}
SqliteConnection.CreateFile(dbFile); //创建sqlite db文件
//创建表语句
string createTable = @"CREATE TABLE StudentInfo (
NId INTEGER PRIMARY KEY AUTOINCREMENT
NOT NULL,
SName VARCHAR (64) NOT NULL,
SSex VARCHAR (2) NOT NULL,
DtBron DATETIME NOT NULL,
SAddress VARCHAR (128)
);";
//因为还是基于Ado.Net 访问数据库,所以惯用套路
//1.Connection 创建数据库连接对象
//2.Command 创建命令对象
//3.DataReader 查询多行多列数据使用(偏向于使用DataReader获取数据)
using (SqliteConnection con = new SqliteConnection($"Data Source ={ dbFile }; Version = 3; "))
{
con.Open();
using (SqliteCommand cmd = new SqliteCommand(createTable,con))
{
Console.WriteLine(cmd.ExecuteNonQuery()); //注意:对于Update/Insert和Delete语句,返回值为该命令所影响的行数.
}
}
//因为基于Ado.net ,操作数据库API是一致的.
string insertSql = $"insert into StudentInfo(SName,SSex,DtBron,SAddress) values('张三','男','1988-12-16','北京市海淀区');";
using (SqliteConnection con = new SqliteConnection($"Data Source ={ dbFile }; Version = 3; "))
{
con.Open();
using (SqliteCommand cmd = new SqliteCommand(insertSql, con))
{
Console.WriteLine(cmd.ExecuteNonQuery()); //返回行数
}
}
Console.WriteLine("ok");
Console.ReadKey();
}
}
}
示例代码发在百度云盘上.链接: https://pan.baidu.com/s/1IL7DS1St4wwymwdQt5yRKg 密码: 41uc
秋风
2018-05-13