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

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

相关推荐

  1. QT开发(动态数据采集与监控)

    2023-12-08 07:54:03       49 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-08 07:54:03       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-08 07:54:03       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-08 07:54:03       87 阅读
  4. Python语言-面向对象

    2023-12-08 07:54:03       96 阅读

热门阅读

  1. macos安装metal 加速版 pytorch

    2023-12-08 07:54:03       64 阅读
  2. 你知道模拟养成游戏如何开发吗?

    2023-12-08 07:54:03       69 阅读
  3. MLX:苹果发布新的机器学习框架

    2023-12-08 07:54:03       55 阅读
  4. OSPF/Open Shortest Path First

    2023-12-08 07:54:03       57 阅读
  5. SSL安全证书怎么查看证书类型?

    2023-12-08 07:54:03       68 阅读
  6. # 如何在Nginx中配置服务器负载均衡(SLB)

    2023-12-08 07:54:03       60 阅读
  7. 【.NET Core】Linq查询运算符(二)

    2023-12-08 07:54:03       45 阅读
  8. 设置Ubuntu或树莓派系统,允许root用户ssh方式连接

    2023-12-08 07:54:03       60 阅读