轻量级数据库Sqlite的使用
SqLite是什么?
SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。
就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。
为什么要用 SQLite?
-
不需要一个单独的服务器进程或操作的系统(无服务器的)。
-
SQLite 不需要配置,这意味着不需要安装或管理。
-
一个完整的 SQLite 数据库是存储在一个单一的跨平台的磁盘文件。
-
SQLite 是非常小的,是轻量级的,完全配置时小于 400KiB,省略可选功能配置时小于250KiB。
-
SQLite 是自给自足的,这意味着不需要任何外部的依赖。
-
SQLite 事务是完全兼容 ACID 的,允许从多个进程或线程安全访问。
-
SQLite 支持 SQL92(SQL2)标准的大多数查询语言的功能。
-
SQLite 使用 ANSI-C 编写的,并提供了简单和易于使用的 API。
-
SQLite 可在 UNIX(Linux, Mac OS-X, Android, iOS)和 Windows(Win32, WinCE, WinRT)中运行。
在Windows上安装SQLite
-
请访问 SQLite 下载页面,从 Windows 区下载预编译的二进制文件。
-
您需要下载 sqlite-tools-win32-*.zip 和 sqlite-dll-win32-*.zip 压缩文件。
-
创建文件夹 F:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到 以上sqlite3.def、sqlite3.dll 和 sqlite3.exe 文件
-
添加 C:\sqlite 到 PATH 环境变量,最后在命令提示符下,使用 sqlite3 命令,将显示如下结果
-
如果出现以上结果,环境也就没有什么问题了,当然我这里的环境变量是F盘必须要切到这里。
如需获取可用的点命令的清单,可以在任何时候输入 ".help"。例如:
sqlite>.help
让我们尝试使用 .show 命令,来查看 SQLite 命令提示符的默认设置。
sqlite>.show
echo: off
explain: off
headers: off
mode: column
nullvalue: ""
output: stdout
separator: "|"
width:
sqlite>
特别注意 键入这些命令的时候不要有空格,否则无法运行
在Sqlite中有一种概念叫做动态数据,即Sqlite使用者专业术语叫做亲和数据,也就是说,你传入的数据和字段的格式不匹配会自动进行转换,这里就不进行列举了。可以在SQLite官方查看,基本上和别的数据库差距不大。
创建数据库
命令:DbName.db;直接即可,有可能你会遇到的问题如下:
创建数据库时报错:syntax error,这个错是因为你创建目录里已经有数据库了,那你怎么能在数据库里再创建数据库呢,你可以直接在你的sqlite环境变量中目录 创建一个文件夹 进去之后 再直接该命令就没事了。
如果你想查看该文件夹中有那些数据库你可以通过.databases命令来查看。
您可以使用 SQLite .quit 命令退出 sqlite 提示符
创建表
SQLite 的 CREATE TABLE 语句用于在任何给定的数据库创建一个新表。创建基本表,涉及到命名表、定义列及每一列的数据类型。
删除表
语法如下:
DROP TABLE database_name.table_name;
还有一些增删改查的操作这里就不说了,简单的创建库和表就说完了 我们在程序中演示进行CRUD操作。
在.NET Core中使用Sqlite数据库
新建一个.net Core控制台项目
二、在“程序包管理器控制台”下输入:
install-package Microsoft.EntityFrameworkCore.Sqlite.Core
install-package SQLitePCLRaw.bundle_green
三.编码
using System;
using Microsoft.Data.Sqlite;
using System.Data;
namespace ConsoApp
{
class Program
{
static void Main(string[] args)
{
string connString = "Data Source=C:\\Users\\MACHENIKE\\Desktop\\Db\\demo.db";
string insertsql = @"insert into company values('冀中能源',1);";
string selectsql = "select * from company";
try
{
using (SqliteConnection conn = new SqliteConnection(connString))
{
conn.Open();
SqliteCommand cmd = new SqliteCommand(insertsql, conn);
cmd.ExecuteNonQuery();
cmd.CommandText = selectsql;
SqliteDataReader dr = cmd.ExecuteReader();
while (dr.Read())
{
Console.WriteLine("UserId:{0}\tUserName:{1}", dr[0], dr[1]);
}
}
}
catch(Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
Dump命令
现在我们的数据库有一定的数据了,我们想要进行备份,可以使用这个命令。
打开之后内容如下,就是我们刚才所操作的。
PRAGMA foreign_keys=OFF;
BEGIN TRANSACTION;
CREATE TABLE company(
name text not null
,id int primary key
);
INSERT INTO company VALUES('1','冀中能源');
INSERT INTO company VALUES('冀中能源',1);
COMMIT;
那么当你没有数据库了 只有了sql文件 你可以再进行回档。
$sqlite3 testDB.db < testDB.sql
免费的Sqlite可视化工具
市面上有很多收费的sqlite的可视化工具,还有免费的,推荐这个 SQLiteExpert 个人免费 要安装 地址:http://www.sqliteexpert.com/
功能非常强大,如果上述两款不能满足,就试试这个吧,当然也可以自己试着做一个,也没有那么难。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· .NET10 - 预览版1新功能体验(一)