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

news2024/11/26 20:47:08

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1291875.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于SpringBoot+Thymeleaf+Mybatis实现大学生创新创业管理系统(源码+数据库+项目运行指导文档)

一、项目简介 本项目是一套基于SpringBoot实现大学生创新创业管理系统,主要针对计算机相关专业的正在做bishe的学生和需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目可以直接作为bishe使用。 项目都经过严格调试&#…

想转行IT,有前途嘛?30个详细理由中会得到你想要的答案

目录 前言: 一、转行IT的前景 二、IT行业的情况 三、技能需求 四、如何准备转行IT 如果你想转行IT,以下是一些建议: 前言: 转行IT是一个颇具吸引力的选择,尤其在当前社会,IT行业的需求非常广泛。然而…

记录一下本地源码安装部署ThingsBoard可能踩到的坑

使用git下载源码后, 必须运行 mvn clean install -DskipTests这一步很重要, 有很多文件需要初始化, 如果直接放入idea可能存在各种问题, 最好是用命令行执行 初始化时, 可能报错停止, 这个一般是网络问题, 可以尝试修改maven镜像, 这是我成功构建的镜像 <!--阿里云仓库--…

[HITCON 2017]SSRFme perl语言的 GET open file 造成rce

这里记录学习一下 perl的open缺陷 这里首先本地测试一下 发现这里使用open打开 的时候 如果通过管道符 就会实现命令执行 然后这里注意的是 perl 中的get 调用了 open的参数 所以其实我们可以通过管道符实现命令执行 然后这里如果file可控那么就继续可以实现命令执行 这里就…

如何使用Net2FTP轻松部署本地Web文件管理器并远程访问管理内网资源?

文章目录 1.前言2. Net2FTP网站搭建2.1. Net2FTP下载和安装2.2. Net2FTP网页测试 3. cpolar内网穿透3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 文件传输可以说是互联网最主要的应用之一&#xff0c;特别是智能设备的大面积使用&#xff0c;无论是个人…

解锁全球潜力:IT外包解决跨国企业海外分支的IT需求

在全球化的浪潮中&#xff0c;跨国企业为了拓展业务辐射面&#xff0c;经常在世界各地设立海外分支。然而&#xff0c;这些分支机构面临着独特的挑战&#xff0c;其中包括解决复杂的IT需求。为了更高效地应对这些挑战&#xff0c;越来越多的企业正在转向IT外包&#xff0c;以便…

【java】Java程序员,你掌握了多线程吗?

摘要&#xff1a;互联网的每一个角落&#xff0c;无论是大型电商平台的秒杀活动&#xff0c;社交平台的实时消息推送&#xff0c;还是在线视频平台的流量洪峰&#xff0c;背后都离不开多线程技术的支持。在数字化转型的过程中&#xff0c;高并发、高性能是衡量系统性能的核心指…

uniapp实战 —— 自适配高度的可滚动区域(scroll-view的使用技巧)

自定义的顶部导航栏&#xff0c;可参考博文 https://blog.csdn.net/weixin_41192489/article/details/134852124 如图可见&#xff0c;在页面滚动过程中&#xff0c;顶部导航栏和底栏未动&#xff0c;仅中间的内容区域可滚动。 整个页面的高度设置为 100%&#xff0c;并采用 …

echarts双折线图

引用 //反应时长 durationCharts categoryCommonChart(studyBehavior.durationCharts, durationCharts) function categoryCommonChart(odata, dom){var myChart echarts.init(document.getElementById(dom));let oarr []oarr odata.series.map(function(item){let color…

YB4042 单节锂电池升压LDE驱动和充电集成芯片

YB4042 单节锂电池升压LDE驱动和充电集成芯片 概述&#xff1a; YB4042是一颗高度集成的电源集成电路&#xff0c;带有可达1A充电电流的线性锂离子充电器和可从4.2V供电驱动多串LDE的升压驱动器。YB4042外接组件少&#xff0c;可支持充电器和LED驱动&#xff0c;非常适合手电筒…

【论文极速读】视频检索中的模态均衡方法

【论文极速读】视频检索中的模态均衡方法 FesianXu 20231206 at Baidu Search Team 前言 传统的视频搜索系统相关性部分主要以文本匹配为基础手段&#xff0c;在其中引入多模态向量容易收到『模态不均衡』的问题&#xff0c;论文[1]尝试对其进行解决&#xff0c;本文进行笔记。…

ROS小练习——话题订阅

目录 一、话题与消息获取 二、代码编写 1、C 2、python 三、编译运行 一、话题与消息获取 rostopic list rostopic type /turtle1/pose rosmsg info turtlesim/Pose 二、代码编写 1、C //包含头文件 #include "ros/ros.h" #include "turtlesim/Pose…

如何本地搭建Linux DataEase数据可视化分析工具并实现公网访问

文章目录 前言1. 安装DataEase2. 本地访问测试3. 安装 cpolar内网穿透软件4. 配置DataEase公网访问地址5. 公网远程访问Data Ease6. 固定Data Ease公网地址 前言 DataEase 是开源的数据可视化分析工具&#xff0c;帮助用户快速分析数据并洞察业务趋势&#xff0c;从而实现业务…

在JSP项目中编写一个接口返回JSON 供JSP界面异步请求数据

首先 我们要引入json处理的依赖工具 在 pom.xml文件的 dependency 标签中加入如下代码 <dependency><groupId>com.googlecode.json-simple</groupId><artifactId>json-simple</artifactId><version>1.1.1</version> </dependenc…

旺店通:API无代码开发的集成解决方案,连接电商平台、CRM和客服系统

集成电商生态&#xff1a;旺店通的核心优势 在数字化转型的浪潮中&#xff0c;旺店通旗舰版奇门以其无代码开发的集成解决方案&#xff0c;正成为电商领域的关键变革者。商家们通过旺店通可以轻松实现与电商平台、CRM系统和客服系统的连接&#xff0c;无需深入了解复杂的API开…

MATLAB将动画演示以及将过程保存为gif动态图片

平时想要做一个动画图片来演示&#xff0c;本人一般有两种方法&#xff1a; 一种是截很多张图之后&#xff0c;将这些图片合成为一张gif动画&#xff1b; 另一种就是录屏再制作成gif&#xff0c;我一般是录下视频之后&#xff0c;使用QQ影音&#xff0c;里面的影音工具箱有一个…

【玩转TableAgent 数据智能分析】-- 数据分析不再是专业人士的专利

文章目录 前言一、TableAgent介绍TableAgent 数据分析智能体融合创新应用的新成果Table Family 二、注册TableAgent访问TableAgent注册用量 三、 体验TableAgent样例数据集体验选择样例数据集样例数据集进行数据分析数据图 样例数据集进行数据分析规定图表格式数据图 自定义数据…

解决:IndentationError:unindent does not match any outer indentation level

解决&#xff1a;IndentationError:unindent does not match any outer indentation level 文章目录 解决&#xff1a;IndentationError:unindent does not match any outer indentation level背景报错问题报错翻译报错位置代码报错原因解决方法今天的分享就到此结束了 背景 在…

Ui自动化概念 + Web自动化测试框架介绍!

1.UI自动化测试概念:我们先明确什么是UI UI&#xff0c;即(User Interface简称UI用户界面)是系统和用户之间进行交互和信息交换的媒介 UI自动化测试: Web自动化测试和移动自动化测试都属于UI自动化测试&#xff0c;UI自动化测试就是借助自动化工具对程序UI层进行自动化的测试 …

Mysql之数据处理增删改

Mysql之数据处理增删改查 插入数据INSERT INTO语句的使用INSERT 与子查询结合 更新数据(修改数据)UPDATE SET语句 删除数据DELETE FROM语句 Mysql8新特性&#xff1a;计算列 插入数据 INSERT INTO语句的使用 用 INSERT INTO 语句&#xff0c;向表中插入数据 方式一&#xff1a;…