如何在winform打包时带上sqlite数据库
sqlite数据库下载及使用:
https://blog.csdn.net/Yyuanyuxin/article/details/105508886
sqlite数据库可视化工具—— DB.Browser安装说明:
https://blog.csdn.net/Yyuanyuxin/article/details/105513276
有关c#_VS2019 项目打包(不带数据库)
https://blog.csdn.net/Yyuanyuxin/article/details/105368316
目录
1.建立解决方案及打包文件:
2,创建数据库及表
3.引用dll
4.在项目中使用数据库。
5.添加数据库到打包工程中
项目需要带数据库打包的情况下,因为产品没有实施工程师负责,sqlserver等需要安装的数据库不是很好的选择,客户无法在安装软件的时候直接使用,需要下载其他的组件,这不是很友好的方式,个人能力及网上资源有限的原因,最后使用了sqlite作为数据库。也是几经波折,其实最后发现很简单。。。
说明:
完整项目文件可在此处下载:点击此处
有关如何设置打包属性,可见https://blog.csdn.net/Yyuanyuxin/article/details/105368316,本文不再重复说明,只说明带数据库部分。
1.建立解决方案及打包文件:
此部分不累述,看说明的链接。

2,创建数据库及表
详情:
https://blog.csdn.net/Yyuanyuxin/article/details/105508886
最好使用可视化工具,不然就需要自己写sql语句,在sqlite3.exe里面执行。
我使用的是可视化工具DB Brower.


3.引用dll
首先需要下载dll使用。
下载地址:
https://system.data.sqlite.org/index.html/doc/trunk/www/downloads.wiki

上传的资源中使用的框架是.Net Framework4.6,如果你打算用此框架,就可以直接使用例子中的dll
这里一定注意要使用对应的dll,要不容易报错或者无法打包。
4.在项目中使用数据库。
个人在例子中有添加一个常用帮助类文件。此处为你的db文件所在路径及名称。我使用的AppDomain.CurrentDomain.BaseDirectory是找到启动目录的路径。在debug调试的时候是debug下。那安装程序则是在安装目录下读取,不要搞错了位置,不然找不到数据库。

例子只是简单的查询及插入数据。

启动界面如下:

5.添加数据库到打包工程中
在打包项目界面上,右击鼠标弹出菜单,选择添加文件。找到你的数据库文件(.db文件)添加,这里注意添加的位置,如果代码上的位置为启动程序的根目录,如我上面所示,则直接按下方添加,如果带有文件夹,这里要记得保持一致。


上面的这种方式不需要在安装项目的时候去加载创建table表,.db文件(数据库)带有所有数据了,操作上比较简单。但如果希望安装的时候重新创表格之类的,有另一种方式,新建一个工程,添加安装程序,然后写数据库初始化的代码。这种方式还不太掌握,就不在这里写了,有兴趣的可以网上搜索看看。
————————————————
版权声明:本文为CSDN博主「Yyuanyuxin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Yyuanyuxin/article/details/105540433
如何在winform打包时带上sqlite数据库的更多相关文章
- C# winform打包(带数据库安装)<转>
使用VS自带的打包工具,制作winform安装项目 开发环境:VS2008 Access 操作系统:Windows XP 开发语言:C# 项目名称:**管理系统 步骤: 1.打开开发环境VS2010, ...
- Android内部自带的SQLite数据库操作dos命令
1:什么叫做SQLite数据库 Android系统内核是Linux系统,Android系统很特殊,他自带了一个SQLite数据库,轻量型的一款嵌入式的数据库 它占用资源非常的低,在嵌入式设备中,可能只 ...
- axios配置及使用(发起请求时带上token)
1.安装 利用npm安装 npm install axios --save 2.引入即可使用 import axios from 'axios' 3.目录 4.各个文件设置: (1)env.js ex ...
- 【Win 10 应用开发】Sqlite 数据库的简单用法
如果老周没记错的话,园子里曾经有朋友写过如何在 UWP 项目中使用 Sqlite数据库的文章.目前我们都是使用第三方封装的库,将来,SDK会加入对 Sqlite 的支持. 尽管目前 UWP-RT 库中 ...
- Android 开发中 SQLite 数据库的使用
SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, ...
- android开发之使用SQLite数据库存储
http://blog.csdn.net/jason0539/article/details/16360835 SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且 ...
- 在Android 开发中使用 SQLite 数据库笔记
SQLite 介绍 SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PH ...
- Python解析excel文件并存入sqlite数据库
最近由于工作上的需求 需要使用Python解析excel文件并存入sqlite 就此做个总结 功能:1.数据库设计 建立数据库2.Python解析excel文件3.Python读取文件名并解析4.将解 ...
- 图解Win 10 应用开发之Sqlite 数据库的简单用法
尽管目前 UWP-RT 库中还没有自带操作Sqlite数据库的API,不过,真要使用的话也不难,因为通过 Nuget ,我们其实可以获取很多支持 Sqlite 操作的第三方组件,当然了,组件虽多,但不 ...
- android开发 解析服务器端xml文件数据存储到android客户端SQLite数据库
以下面xml文件为例对其解析(假设此xml就在服务器端Server项目下的servlet包下的MenuServlet文件的输出流中): <?xml version="1.0" ...
随机推荐
- 代码随想录算法训练营day23 | leetcode 669. 修剪二叉搜索树 ● 108.将有序数组转换为二叉搜索树 ● 538.把二叉搜索树转换为累加树
LeetCode 669. 修剪二叉搜索树 分析1.0 递归遍历树时删除符合条件(不在区间中)的节点-如何遍历如何删除 如果当前节点大于范围,递归左树,反之右树 当前节点不在范围内,删除它,把它的子树 ...
- Linux:grep 查找文件内容
在 Windows 中打开文件用查找功能可以查找我们想要的字符,前提是要打开文件.Linux 有一个指令不用打开文件就可以查询字符,而且支持正则表达式-- grep 指令.不仅如此,grep 还支持在 ...
- IO相关了解
1.IO的概念 IO简单来讲就是对输入输出设备的简化表达形式 单片机中各种接口,进行数据流的传输 从磁盘中读取数据至内存,又或者从内存中写入磁盘 编程中的IO 此时的IO其应用程序的运行态,即进程-- ...
- redis RDB和AOF
1.RDB 在指定的时间间隔内讲数据快照写入硬盘当中 2.AOF 2.1 以日志的形式来记录每个写操作,redis启动之初会读取该文件重新构建数据 2.2 修改配置文件 appendonly no 为 ...
- C++数据结构-结构体
C++数据结构-结构体 学生信息 http://oj.61coding.cn/problem.php?cid=1028&pid=0 #include<bits/stdc++.h> ...
- C#获取各种当前日期时间
我们可以通过使用DataTime这个类来获取当前的时间.通过调用类中的各种方法我们可以获取不同的时间:如:日期(2008-09-04).时间(12:12:12).日期+时间(2008-09-04 12 ...
- 【Direct3D 12】什么是Direct3D 12
什么是DirectX? Microsoft DirectX是一套图形API,可以用来创建游戏和高性能的图形应用.DirectX支持2D和3D图形. 什么是Direct3D 12? Direct3D是D ...
- 最火小游戏《羊了个羊》最新H5升级通关版
背景 最近大火的微信小游戏<羊了个羊>刷爆朋友圈和群聊,大家都在搜索羊了个羊第二关怎么过.羊了个羊通关秘籍.这款小游戏实在难度太高,及其容易上瘾,而且很多朋友怎么也通不过. 这一次小编给大 ...
- foreach 和for
"foreach和for循环如果只是遍历集合或者数组,用foreach好些,如果是对集合中的值进行修改,就要用for循环了,其实foreach的内部原理其实也是Iterator,但不能像It ...
- Java面向对象之static关键字详解
static关键字详解 package OOP.Demo10; public class Person { //2:赋初值 { System.out.println("匿名代码块" ...