零、为什么要用SQLite
记录需要频繁修改、新增、查询、删除的数据需要专业数据库,比如曲线数据点、用户信息,因为用数据库比起日常办公的excel表格维护更方便,体积也更小。SQL就是一种常用数据库。C#支持内嵌SQLite包,可以实现数据库文件创建、新建数据行、修改数据、删除数据、读取数据等基础操作。本文会细致讲解每一步操作,如果你对数据库操作还不熟悉,请按步骤阅读。
一、怎样引用SQLite
解决方案项目管理器视图,右键项目名称(就是解决方案字样的下一行),选择“管理Nuget程序包”,在“浏览”选项卡中搜索SQLite,安装这几个
在代码上方添加using指令,就可以了。
using System.Data.SQLite;
二、数据库链接
首先,需要把外部数据库文件作为一个变量,传递给C#环境。这个变量我们先命名为connection。GetCon()方法返回数据库链接指令,包含了数据库文件路径与名称信息。如果文件不存在,就会新建该文件,再链接该文件。如果文件已存在,就会直接链接该文件。
SQLiteConnection connection = new SQLiteConnection(GetCon());
现在讲一下链接指令。一般是这样:
private string GetConn()
{
return "data source= "C:\\User\\Admin\\Desktop\\database1.db;version=3;"
}
注意,文件路径需要是绝对路径,否则会报错说数据库文件不存在。
链接完成后,就开始操作数据库了,多数人链接数据库应该不是就连上试试。这里需要把数据库操作指令与数据库链接关联。像这样:
SQLiteCommand cmd = new SQLiteCommand();
cmd.Connection = connection;//关联指令与链接
connection.Open();//打开数据库
cmd.CommandText = GetCommand();//修改指令文本,GetCommand()的返回值自定义
cmd.ExecuteNonQuery();//执行指令文本
connection.Close();//关闭数据库
关联后打开数据库,修改数据库操作指令对象cmd的指令文本属性CommandText,执行指令文本,记得执行完关闭,即可。
那么CommandText应该怎么设置呢?这里只介绍新增数据表与新增数据项,一通百通,看懂这两个操作就可以无障碍阅读其他博文的代码了。
三、新增数据表
private string GetCommand()
{
return "CREATE TABLE IF NOT EXISTS datatable(详情 string,时间 datetime,数据1 decimal, 数据2 decimal)";
}
指令头部很好理解,就是英文的“如果不存在名为datatable的数据表就创建一个表格,括号里是表格的数据列的名称与类型,用英文逗号分开,注意名称后面需要空格。
试试创建一个数据库表格吧!但创建好以后,怎么查看数据库文件呢?是不是要装专业数据库软件呢?看第四部分。
四、在VScode查看数据库文件
有些博主会推荐用一些轻量级的数据库查看软件,但VScode多数人都会装,用这个不是更香?只要安装SQL拓展即可。
五、新增数据行
以刚刚的表格格式为例,插入新数据行可以是这样
private string GetCommand()
{
return "INSERT INTO datatable VALUES ('"+DateTime.Now.ToString("s")+"',"+
"'无详情',1.2,15)";
}
指令头依旧是简单的英文,给datatable插入值……然后是括号,每个数据项直接用逗号分割。如果数据项不是数字,就用单引号引起来。
如果插入的新数据行的数据项目数量少于或多于数据表的列数,就会添加失败。如果你用一个Try-Catch语句捕捉异常信息,会看到“表单有XX列但添加的数据有XX个”,当然啦,是英文版。
六、怎样规避常见SQL报错
本文已经提到了3种:
1. 使用绝对路径。
2. 在插入的非数值数据项两边加引号。
3. 新增数据行数据项目与数据列列数一致,类型对齐。
还有一些报错,本人也遇到过
3. 表格数据列列名不能用数字开头。如果用数字开头,也会抛出异常。
4. 表格数据列列名不能带“-”符号,否则会抛出异常。
相信读到这里,你已经掌握了基本的SQLite指令,去试试吧!