2023年,第32周,第2篇文章。给自己一个目标,然后坚持总会有收货,不信你试试!
在C#的.NET Framework框架下,有很多轻量级数据库选择,比如:SQLike就是其中一款,一起来了解SQLike的简单使用吧。
目录
- 一、轻量级数据库
- 1.1、基本概念
- 1.2、SQLite
- 1.2、Berkeley DB
- 1.3、LevelDB
- 1.4、Redis
- 1.5、H2 Database
- 二、SQLike优点
- 2.1、简单易用
- 2.2、小巧轻量
- 2.3、嵌入式支持
- 2.4、平台无关性
- 三、SQLike缺点
- 3.1、功能有限
- 3.2、性能有限
- 3.3、缺少高级特性
- 四、SQLike操作
- 3.1、创建数据库文件
- 3.2、创建表
- 3.3、添加表记录
- 3.4、查询表记录
- 3.5、更新表记录
- 五、可视化管理工具
- 5.1、DBeaver
- 5.2、HeidiSQL
- 5.3、Navicat(推荐)
一、轻量级数据库
1.1、基本概念
轻量级数据库是指具有较小的存储需求、资源消耗较低、易于部署和使用的数据库系统。
它们通常专注于提供基本的数据存储和查询功能,适用于小型应用、嵌入式系统或具有临时性存储需求的项目。
1.2、SQLite
SQLite 是一个自包含、无服务器、零配置、事务性的关系型数据库引擎。
它的特点是文件级别的存储,可以直接使用单个文件作为数据库。
SQLite 被广泛应用于各种平台和编程语言,包括移动应用开发、桌面应用开发和嵌入式系统等。
1.2、Berkeley DB
Berkeley DB 是一个用于嵌入式系统的数据库引擎。
它提供了快速、可靠的键值对存储和查询功能,支持 ACID 事务操作。
Berkeley DB 非常灵活,可以用作持久化存储、缓存、日志文件等多种用途。
1.3、LevelDB
LevelDB 是一个键值对存储引擎,由 Google 开发。
它基于日志结构合并(Log-Structured Merge,LSM)树的数据结构,拥有快速写入和查询性能。
LevelDB 是开源的,并且支持多种编程语言的绑定。
1.4、Redis
Redis 是一个开源的内存数据结构存储系统,可以用作数据库、缓存和消息中间件等多种用途。
它支持多种数据结构(如字符串、哈希表、列表、集合、有序集合等),具有高性能、高并发和可扩展性。
1.5、H2 Database
H2 是一个用 Java 编写的嵌入式关系型数据库引擎。
它支持 SQL 数据库标准和 JDBC API,并提供了丰富的功能,包括内存数据库、持久数据库、集群数据库等。
这些轻量级数据库各有特点,可以根据项目的具体需求选择适合的数据库。
它们通常易于部署、配置和使用,适用于小型应用或具有资源限制的环境。
请注意,虽然这些数据库可以处理较小规模的数据存储需求,但在大规模和高并发场景下,可能需要使用更强大的数据库系统。
因此,在选择数据库时,需要根据项目的规模、性能要求和可扩展性等因素进行评估。
二、SQLike优点
SQLike 是一个轻量级的嵌入式 SQL 数据库引擎,它具有以下一些特点:
2.1、简单易用
SQLike 的语法与标准的 SQL 语法相似,使得它易于学习和使用。它提供了常见的 SQL 操作,例如 SELECT、INSERT、UPDATE 和 DELETE,以及多表连接、聚合函数等功能。
2.2、小巧轻量
SQLike 的核心代码相对较小,仅依赖少量的外部库。这使得它对系统资源的消耗较低,并且适合在资源受限的环境中使用,如嵌入式设备或移动应用中。
2.3、嵌入式支持
SQLike 可以作为嵌入式数据库引擎直接嵌入到应用程序中。这样,它可以与应用程序一起发布,无需单独的数据库服务器,并且没有独立的数据库管理系统(DBMS)的配置和维护工作。
2.4、平台无关性
SQLike 是使用 C 语言编写的,可以在多个操作系统和平台上运行,如 Windows、Linux、macOS 等。这使得它具有较好的跨平台兼容性。
三、SQLike缺点
3.1、功能有限
由于 SQLike 的主要目标是提供一个简单的 SQL 数据库引擎,它可能在一些高级功能和扩展性方面有所限制。例如,它的支持某些复杂查询和优化技术的能力可能相对较弱。
3.2、性能有限
由于 SQLike 的设计着重于轻量级和简单性,它的性能可能不如一些专门设计用于高性能的数据库引擎。对于高并发、大数据量或复杂查询等场景,SQLike 的性能可能较弱。
3.3、缺少高级特性
相比于一些成熟的数据库系统,SQLike 可能缺乏高级特性,如事务处理、存储过程、触发器等。这些特性在某些应用场景下是必需的,但在 SQLike 中可能不可用。
总的来说,SQLike 是一个方便、易于使用和部署的轻量级嵌入式数据库引擎,适用于简单的数据存储和查询需求。但在复杂、高性能和高可扩展性的数据库场景中,可能需要考虑其他更为功能强大的数据库解决方案。
四、SQLike操作
3.1、创建数据库文件
默认可以使用database命名数据库名称,当然也可以根据自己业务情况命名。
默认数据库文件创建在程序员运行同一目录下,可以指定路径输出
string connectionString = "Data Source=database.db;Version=3;";
using (SQLiteConnection connection = new SQLiteConnection(connectionString))
{connection.Open();// 判断数据库文件string databasePath = "database.db";if (!File.Exists(databasePath)){SQLiteConnection.CreateFile(databasePath);}
}
3.2、创建表
这里可以加一个逻辑判断,表不存在则创建表,否则不作操作
// 判断表
bool isTable = true;
string tableName = "MyTableName";
string query = $"SELECT name FROM sqlite_master WHERE type='table' AND name='{tableName}'";
using (SQLiteCommand command = new SQLiteCommand(query, connection))
{var result = command.ExecuteScalar();if (result == null){isTable = false;}
}
// 创建表
if (!isTable)
{string createTableQuery = $"CREATE TABLE {tableName} (Id INTEGER PRIMARY KEY, countValue int,name Text)";using (SQLiteCommand command = new SQLiteCommand(createTableQuery, connection)){command.ExecuteNonQuery();}
}
3.3、添加表记录
根据上一步判断,都会确保存在表
// 并添加一条记录
if (!isTable)
{string insertDataQuery = $"INSERT INTO {tableName} (countValue,name) VALUES (99,'张三')";using (SQLiteCommand command = new SQLiteCommand(insertDataQuery, connection)){command.ExecuteNonQuery();}
}
3.4、查询表记录
// 查询表
string tableName = "MyTableName";
string queryText = $"SELECT * FROM {tableName}";
using (SQLiteCommand command = new SQLiteCommand(queryText, connection))
{using (SQLiteDataReader reader = command.ExecuteReader()){while (reader.Read()){// 获取每行的数据int id = reader.GetInt32(0);int CountValue = reader.GetInt32(1);string name = reader.GetString(2);}}
}
3.5、更新表记录
添加或者更新表记录时,同样是可以通过参数化进行操作
string databasePath = "database.db";
string connectionString = $"Data Source={databasePath};Version=3;";using (SQLiteConnection connection = new SQLiteConnection(connectionString))
{connection.Open();// 创建 UPDATE 语句string updateQuery = "UPDATE MyTableName SET CountValue = @CountValue WHERE Id = @Id";using (SQLiteCommand command = new SQLiteCommand(updateQuery, connection)){// 设置 UPDATE 语句中的参数command.Parameters.AddWithValue("@CountValue", CountValue);command.Parameters.AddWithValue("@Id", IdValue);// 执行 SQL 语句int rowsAffected = command.ExecuteNonQuery();if (rowsAffected > 0){// 更新成功}else{// 更新失败 }}connection.Close();
}
五、可视化管理工具
SQLike 并没有官方提供的可视化工具,因为它是一个轻量级的嵌入式 SQL 数据库引擎。
SQLike 更适合作为嵌入式数据库引擎直接嵌入到 C# 应用程序中使用,而不是作为一个独立的数据库服务器运行。
然而,你可以借助其他第三方可视化工具来管理和操作 SQLike 数据库。
这些工具可以提供类似于在其他数据库系统中使用的可视化界面和功能,如查询编辑器、数据视图、表格视图、图表展示等。
以下是一些常用的 SQL 数据库管理工具,可以与 SQLike 一起使用
5.1、DBeaver
DBeaver 是一款免费、开源的通用 SQL 数据库管理工具,支持多种数据库引擎。你可以通过 DBeaver 连接和管理 SQLike 数据库,并使用其提供的可视化界面进行数据操作和查询。
5.2、HeidiSQL
HeidiSQL 是一款专为 MySQL、MariaDB、SQL Server 和 PostgreSQL 等数据库引擎设计的可视化工具。虽然它的主要定位是关系型数据库,但你也可以尝试使用 HeidiSQL 连接和管理 SQLike 数据库。
5.3、Navicat(推荐)
Navicat 是一款商业数据库管理工具,支持多种数据库引擎,包括 MySQL、SQL Server、SQLite 和 PostgreSQL 等。你可以借助 Navicat 提供的界面和功能来管理 SQLike 数据库。
这些工具都提供了可视化、用户友好的界面,可以帮助你更方便地管理数据库、执行查询和操作数据。
你可以选择适合自己的工具,并通过连接 SQLike 数据库来使用。
需要注意的是,这些工具通常是为关系型数据库设计的,可能不会提供特定于 SQLike 的功能或优化。
因此,在使用这些工具时,可能会有一些功能限制或兼容性问题。