C# WPF上位机开发(数据库sqlite编程)

2023-12-14 16:41:49

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱: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的结构,这样可以使得代码本身更加地健壮。

文章来源:https://blog.csdn.net/feixiaoxing/article/details/134847163
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。