C#操作SQLite实现数据的增删改查

下面是详细讲解“C#操作SQLite实现数据的增删改查”的完整攻略,过程中将包含两条示例。

1. SQLite介绍

SQLite是一款开源,轻量级的关系型数据库,和其他大型数据库相比,SQLite具有占用资源少、启动快、数据存储在本地等优点。在不需要大规模并发及复杂查询的应用场景下,SQLite是一种非常合适的数据库。

2. 准备工作

在开始前,我们需要安装 SQLite 数据库和 SQLite ADO.NET provider。推荐使用 nuget 包管理器安装 SQLite 数据库的依赖包。

3. 建立数据库连接

为了使用 SQLite,我们先要建立连接。可以使用下面的代码来实例化一个 SQLiteConnection:

SQLiteConnection connection = new SQLiteConnection("Data Source=database.sqlite3");

创建SQLiteConnection类的实例对象时,需要提供数据库文件的路径或者sqlite内存数据库的名字。更多的连接字符串选项可以在SQLite连接字符串文档中查看。

打开SQLite连接,使用下面的代码:

connection.Open();

打开连接后,可以把 SQLiteDataAdapter 和 DataSet 实例化来操作 SQLite 数据库。

4. 数据库操作

4.1 数据库表的创建

SQLite 是一款 SQL 数据库,使用标准 SQL 语句可以创建表、插入记录,更新记录,删除记录等。

使用下面的代码在 SQLite 中创建一个表:

string create_sql = @"CREATE TABLE Students (
                        ID INTEGER PRIMARY KEY AUTOINCREMENT,
                        Name VARCHAR(50) NOT NULL, 
                        Age INTEGER);";
SQLiteCommand command = new SQLiteCommand(create_sql, connection);
command.ExecuteNonQuery();

这段代码创建了一个名为“Students”的表,在该表中,有一个 ID 列为主键,并且自动创建,所以我们不需要为这个列显式的插入数据,因为每一次插入数据时,SQLite engine 会为这个 ID 生成一个唯一的号码。

4.2 数据库表中添加/更新数据

SQLite 提供了插入、更新数据的语法,可以使用 ADO.NET 中的 SQLiteCommand 类来执行这些命令。

插入一条数据:

string insert_sql = "INSERT INTO Students (Name, Age) VALUES ('小明', 20);";
SQLiteCommand insert_command = new SQLiteCommand(insert_sql, connection);
int result = insert_command.ExecuteNonQuery();

在这个示例中,我们插入了一条名字为“小明”,年龄为20的数据。ExecuteNonQuery()方法返回影响的行数,也就是说如果插入成功,则返回1。

4.3 数据库读取

要从 SQLite 中读取数据,我们可以使用 SQLiteDataReader。下面是使用 SQLiteDataReader 读取刚刚插入的数据的示例:

string read_sql = "SELECT * FROM Students WHERE Name='小明';";
SQLiteCommand read_command = new SQLiteCommand(read_sql, connection);
SQLiteDataReader reader = read_command.ExecuteReader();

while (reader.Read())
{
    Console.WriteLine(reader.GetInt32(0) + " " + reader.GetString(1) + " " + reader.GetInt32(2));
}

reader.Close();

在这个示例中,我们读取了名字为“小明”的数据,并将其打印到控制台。ExecuteReader()方法返回一个 SQLiteDataReader 对象,可以读取查询结果的每一行,Read()方法将指针移动到下一行并返回一个布尔值,表示是否还有更多结果。

4.4 数据库表中数据删除

删除数据同样也可以使用 SQLiteCommand 来执行删除命令,下面是一个删除数据的示例:

string delete_sql = "DELETE FROM Students WHERE ID=1;";
SQLiteCommand delete_command = new SQLiteCommand(delete_sql, connection);
int delete_result = delete_command.ExecuteNonQuery();

在这个示例中,我们删除了 Students 表中 ID 为 1 的记录。

4.5 数据库表修改数据

修改数据同样也可以使用 SQLiteCommand 来执行修改命令,下面是一个修改数据的示例:

string update_sql = "UPDATE Students SET Age=15 WHERE Name='小明';";
SQLiteCommand update_command = new SQLiteCommand(update_sql, connection);
int update_result = update_command.ExecuteNonQuery();

在这个示例中,我们修改了 Students 表中名字为“小明”的记录的年龄为15。

5. 完整示例

下面是一个包含全部操作的完整示例:

using System;
using System.Data.SQLite;

class Program
{
    static void Main(string[] args)
    {
        SQLiteConnection connection = new SQLiteConnection("Data Source=database.sqlite3");
        connection.Open();

        string create_sql = @"CREATE TABLE Students (
                                ID INTEGER PRIMARY KEY AUTOINCREMENT,
                                Name VARCHAR(50) NOT NULL, 
                                Age INTEGER);";
        SQLiteCommand create_command = new SQLiteCommand(create_sql, connection);
        create_command.ExecuteNonQuery();

        string insert_sql = @"INSERT INTO Students (Name, Age) VALUES ('小明', 20);";
        SQLiteCommand insert_command = new SQLiteCommand(insert_sql, connection);
        int insert_result = insert_command.ExecuteNonQuery();

        string read_sql = @"SELECT * FROM Students WHERE Name='小明';";
        SQLiteCommand read_command = new SQLiteCommand(read_sql, connection);
        SQLiteDataReader reader = read_command.ExecuteReader();
        while (reader.Read())
        {
            Console.WriteLine(reader.GetInt32(0) + " " + reader.GetString(1) + " " + reader.GetInt32(2));
        }
        reader.Close();

        string delete_sql = @"DELETE FROM Students WHERE ID=1;";
        SQLiteCommand delete_command = new SQLiteCommand(delete_sql, connection);
        int delete_result = delete_command.ExecuteNonQuery();

        string update_sql = @"UPDATE Students SET Age=15 WHERE Name='小明';";
        SQLiteCommand update_command = new SQLiteCommand(update_sql, connection);
        int update_result = update_command.ExecuteNonQuery();

        connection.Close();
    }
}

在这个示例中,我们首先创建了一个名为“Students”的表,然后插入了一行数据(名字为“小明”,年龄为20),接着读取了该数据,并将其输出到控制台。然后删除了 ID 为 1(也就是我们插入的数据所在的那一行)的数据,最后将名字为“小明”的数据的年龄更新为 15。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C#操作SQLite实现数据的增删改查 - Python技术站

(2)
上一篇 2023年5月15日
下一篇 2023年5月15日

相关文章

  • ASP.NET Core MVC通过IActionFilter.OnActionExecuting方法,获取Controller的Action方法参数值

    用过ASP.NET Core MVC中IActionFilter拦截器的开发人员,都知道这是一个非常强大的MVC拦截器。最近才发现IActionFilter的OnActionExecuting方法,甚至可以获取Controller的Action方法参数值。 假如我们在ASP.NET Core MVC项目中有一个HomeController,其中有一个Acti…

    C# 2023年4月22日
    00
  • 浅谈C#多线程下的调优

    浅谈C#多线程下的调优 为什么要进行多线程调优 在C#应用中使用多线程可以提高应用性能,但是在多线程应用中容易出现许多问题,包括内存泄漏、死锁和竞争条件等问题。因此,在进行多线程编程时,需要考虑许多问题,如线程安全、同步和互斥等。进行多线程调优可以让应用程序更加稳定和正确地运行。 多线程调优方法 1. 同步机制 在多线程编程中,同步机制是必不可少的。因为多个…

    C# 2023年5月15日
    00
  • C#使用IHttpModule接口修改http输出的方法

    这里介绍一下如何使用IHttpModule接口来修改HTTP输出。 什么是 IHttpModule IHttpModule 是一个定义在 System.Web 命名空间下的接口,通过实现它,我们可以在 ASP.NET 应用程序处理请求和发送响应时注入一些自己的操作。具体来说,IHttpModule 接口中提供了两个方法: Init:在应用程序域中初始化模块时…

    C# 2023年6月1日
    00
  • 利用Warensoft Stock Service编写高频交易软件

    利用Warensoft Stock Service编写高频交易软件需要具备一定的编程和交易知识。下面是一些步骤,可以帮助您开始: 1. 注册并开通Warensoft帐户 Warensoft是提供互联网股票交易服务的平台。首先,需要在Warensoft官网上注册一个帐户,并通过实名认证等方式完成开户流程。注册后,可以使用Warensoft Stock Serv…

    C# 2023年6月6日
    00
  • 英语单词state与status的区别

    英语单词state与status的区别 在英语中,state和status两个单词都可以表示“状态”的意思,但是它们在使用上存在着一些区别。 state的用法 state一般用于描述事物或人的状况,强调状况的实际情况,即客观的存在状态。例如: The state of the economy is not good.(经济状况不好。) I am in a s…

    C# 2023年6月6日
    00
  • C# .NET中Socket简单实用框架的使用教程

    C#.NET中Socket简单实用框架的使用教程 什么是Socket框架? Socket框架是一种网络编程模型,被广泛应用于各种网络通信应用程序的开发中,包括聊天工具、文件传输、视频会议等。Socket框架通过封装了底层的TCP/IP协议,提供了一种简单、灵活且高效的网络编程模型。通常情况下,使用Socket框架编写网络应用程序需要掌握C#语言和.NET框架…

    C# 2023年5月15日
    00
  • asp.net+Ligerui实现grid导出Excel和Word的方法

    下面是“asp.net+Ligerui实现grid导出Excel和Word的方法”的完整攻略。 一、前置条件 在开始实现导出Excel和Word的方法前,需要确保已经安装了以下环境: Visual Studio以及.NET Framework Ligerui框架 二、实现导出Excel和Word的方法 1. 导出Excel 步骤一:添加NuGet包 在Vis…

    C# 2023年5月31日
    00
  • 深入理解C#中的枚举

    深入理解C#中的枚举 枚举是C#语言中经常使用的一种类型,是一组命名常量的集合。它为常量赋予了名称,提高了代码的可读性和可维护性。在本文中,我们将全面介绍C#中枚举的相关概念、用法和注意事项。 枚举的定义 C#中枚举的定义语法为: enum 枚举名 { 可命名常量1, 可命名常量2, … } 例如,定义一个表示星期的枚举: enum WeekDays {…

    C# 2023年5月15日
    00
合作推广
合作推广
分享本页
返回顶部