【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
前面我们写过一个会员管理的软件,上面数据保存的方法是用的json保存的。如果数据量比较少,或者是数据类型也不多的时候,这么做问题不大。比如做一个小的抽奖软件,要把所有公司的同事信息登记上去,这个时候理论上一个json文件就够了。但是,如果数据比较多的话,那么用json就不合适了。普遍这个时候,大家会选择数据库来进行处理和操作。
数据库的操作一般有两种方法,一种是直接操作数据库文件;一种是连接数据库服务器。前者最常见的是access、sqlite;后者用的比较多的有sql server、mysql、oracle等数据库软件。因为我们平常用的数据不算特别复杂,这个时候其实用sqlite就可以了。
此外为了自由查看sqlite里面的数据,我们一般还会安装一个navicat软件对sqlite进行操作,这也是很方便的。
1、利用navicat创建一个sqlite数据库
用navicat不仅可以帮助我们进行数据查看,调试的时候也可以帮助我们进行double check和验证。创建数据库的方法不复杂,这里介绍一下创建表的方法,主要就是一条sql语句,
/*
Navicat SQLite Data Transfer
Source Server : wpf
Source Server Version : 30808
Source Host : :0
Target Server Type : SQLite
Target Server Version : 30808
File Encoding : 65001
*/
PRAGMA foreign_keys = OFF;
-- ----------------------------
-- Table structure for MemberInfo
-- ----------------------------
DROP TABLE IF EXISTS "main"."MemberInfo";
CREATE TABLE "MemberInfo" (
"ID" INTEGER NOT NULL,
"NAME" TEXT,
PRIMARY KEY ("ID")
);
2、利用NuGet安装第三方库System.Data.SQLite
c#因为会对db文件进行直接操作,所以这个时候我们需要第三方软件的帮助。目前针对sqlite用的比较多的第三方软件就是System.Data.SQLite。安装方法也比较简单,首先利用NuGet找到对应的软件包,选择安装即可。
安装之后,如果没有问题的话,就可以在引用目录下看到对应的库,
3、编写代码
编写代码前,首先引用库,这是最基本的要求,
using System.Data.SQLite;
有了SQLite这个库之后,我们就可以进行增删改查的测试了。最简单的方法,就是在不改变之前软件功能的前提下,独立编写一个function来验证,里面可以包含数据库连接、数据添加、数据删除等操作,这样来满足我们的测试要求。每做一步操作之后,还可以通过navicat查看对应的db内容,判断此时的操作是否正确。
增删改查之中,稍微复杂一点的可能就是查。因为前面三个操作都不需要对返回的数据进行解析处理,而查这个操作则需要把相关的数据拷贝下来。掌握了这四个基本操作,那么关于sqlite的应用基本就问题不大了。
private void load_data_from_db()
{
// reference url
// https://www.runoob.com/sqlite/sqlite-update.html
string cs = @"URI=file:data.db";
try
{
var con = new SQLiteConnection(cs);
con.Open();
var cmd = new SQLiteCommand(con);
cmd.CommandText = "DELETE FROM MemberInfo";
cmd.ExecuteNonQuery();
cmd.CommandText = "INSERT INTO MemberInfo(ID, NAME) VALUES(1,'aaa')";
cmd.ExecuteNonQuery();
cmd.CommandText = "INSERT INTO MemberInfo(ID, NAME) VALUES(2,'bbb')";
cmd.ExecuteNonQuery();
cmd.CommandText = "INSERT INTO MemberInfo(ID, NAME) VALUES(3,'ccc')";
cmd.ExecuteNonQuery();
cmd.CommandText = "DELETE FROM MemberInfo WHERE ID = 1";
cmd.ExecuteNonQuery();
cmd.CommandText = "UPDATE MemberInfo SET NAME='ddd' WHERE ID = 2";
cmd.ExecuteNonQuery();
cmd.CommandText = "SELECT * FROM MemberInfo";
cmd.ExecuteNonQuery();
SQLiteDataReader reader = cmd.ExecuteReader();
while (reader.Read())
{
id_array[total] = Convert.ToInt32(reader["ID"].ToString());
name_array[total] = reader["NAME"].ToString();
total += 1;
}
con.Close();
}
catch(Exception e)
{
MessageBox.Show(e.ToString());
}
}
当然,为了防止异常的发生,我们还是用了try-catch的结构,这样可以使得代码本身更加地健壮。