ASP.NET|日常开发中连接Sqlite数据库详解

ops/2024/12/14 6:27:42/

在这里插入图片描述
在这里插入图片描述

ASP.NET|日常开发中连接Sqlite数据库详解

  • 前言
  • 一、安装和引用相关库
    • 1.1 安装 SQLite 驱动
    • 1.2 引用命名空间
  • 二、配置连接字符串
    • 2.1 连接字符串的基本格式
  • 三、建立数据库连接
    • 3.1 创建连接对象并打开连接
  • 四、执行数据库操作
    • 4.1 创建表(以简单的用户表为例)
    • 4.2 插入数据
    • 4.3 查询数据
    • 4.4 更新数据
    • 4.5 删除数据
  • 结束语
  • 优质源码分享

ASP.NET|日常开发中连接Sqlite数据库详解,在ASP.NET日常开发中,连接SQLite数据库是一个常见的需求,特别是对于那些需要轻量级、嵌入式数据库解决方案的应用程序。SQLite是一个自给自足的、无服务器的、零配置的SQL数据库引擎,它非常适合于嵌入式设备和移动应用程序。以下是一个详细的步骤指南,介绍如何在ASP.NET应用程序中连接SQLite数据库

前言

        在数字浪潮汹涌澎湃的时代,程序开发宛如一座神秘而宏伟的魔法城堡,矗立在科技的浩瀚星空中。代码的字符,似那闪烁的星辰,按照特定的轨迹与节奏,组合、交织、碰撞,即将开启一场奇妙且充满无限可能的创造之旅。当空白的文档界面如同深邃的宇宙等待探索,程序员们则化身无畏的星辰开拓者,指尖在键盘上轻舞,准备用智慧与逻辑编织出足以改变世界运行规则的程序画卷,在 0 和 1 的二进制世界里,镌刻下属于人类创新与突破的不朽印记。

一、安装和引用相关库

1.1 安装 SQLite 驱动

    在ASP.NET项目中连接 SQLite 数据库,首先需要安装 SQLite 的.NET 数据访问库。可以通过 NuGet 包管理器安装System.Data.SQLite包。这个包提供了在.NET 环境下操作 SQLite 数据库所需的类和方法。

1.2 引用命名空间

    在代码文件中添加using System.Data.SQLite;引用,这样才能使用 SQLite 相关的类,如SQLiteConnection、SQLiteCommand等。

二、配置连接字符串

2.1 连接字符串的基本格式

    SQLIte 的连接字符串格式相对简单。例如,连接一个本地的 SQLite 数据库文件的连接字符串可以是:

string connectionString = "Data Source=your_database_file.db;Version=3;";

    其中,Data Source指定了 SQLite 数据库文件的路径。如果数据库文件在项目的相对路径下,需要确保路径的正确性。Version=3表示使用 SQLite 的版本 3,这是比较常用的版本。

三、建立数据库连接

3.1 创建连接对象并打开连接

    使用SQLiteConnection类来创建连接对象,例如:

SQLiteConnection connection = new SQLiteConnection(connectionString);
try
{connection.Open();// 在这里执行数据库操作
}
catch (SQLiteException ex)
{Console.WriteLine($"数据库连接错误: {ex.Message}");
}
finally
{connection.Close();
}

    在try - catch - finally块中,try部分用于打开连接并执行数据库操作;catch部分用于捕获数据库连接过程中可能出现的异常,如文件不存在、权限问题等;finally部分确保无论操作是否成功,连接都会被关闭,以释放资源。

四、执行数据库操作

4.1 创建表(以简单的用户表为例)

  • 构建创建表语句

    在 SQLite 中,使用CREATE TABLE语句来创建表。例如,创建一个名为users的表,包含id(主键,自动增长)、name和age字段的 SQL 语句如下:

    CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT,age INTEGER);
  • 在 C# 中执行创建表操作

    使用SQLiteCommand类来执行 SQL 语句,如下所示:

    string createTableQuery = "CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT, age INTEGER)";SQLiteCommand command = new SQLiteCommand(createTableQuery, connection);try{command.ExecuteNonQuery();Console.WriteLine("表创建成功。");}catch (SQLiteException ex){Console.WriteLine($"表创建错误: {ex.Message}");}

    ExecuteNonQuery方法用于执行不返回结果集的 SQL 语句,如CREATE、INSERT、UPDATE和DELETE语句,它返回受影响的行数。对于创建表操作,如果成功创建,返回值为 0。

4.2 插入数据

  • 构建插入语句

    插入数据使用INSERT INTO语句。例如,插入一条用户记录的 SQL 语句如下:

    INSERT INTO users (name, age) VALUES ('John', 20);
  • 在 C# 中执行插入操作

    同样使用SQLiteCommand类,并且推荐使用参数化查询,如下所示:

    string insertQuery = "INSERT INTO users (name, age) VALUES (@name, @age)";SQLiteCommand command = new SQLiteCommand(insertQuery, connection);command.Parameters.AddWithValue("@name", "John");command.Parameters.AddWithValue("@age", 20);try{int rowsAffected = command.ExecuteNonQuery();if (rowsAffected > 0){Console.WriteLine("数据插入成功。");}}catch (SQLiteException ex){Console.WriteLine($"数据插入错误: {ex.Message}");}

    参数化查询不仅可以防止 SQL 注入攻击,还可以方便地动态设置参数值。ExecuteNonQuery方法返回受影响的行数,对于插入操作,如果成功插入一行,返回值为 1。

4.3 查询数据

  • 构建查询语句

    查询数据使用SELECT语句。例如,查询users表中所有用户的姓名和年龄的 SQL 语句如下:

    SELECT name, age FROM users;
  • 在 C# 中执行查询操作

    创建SQLiteCommand对象并执行查询,通过SQLiteDataReader读取结果,如下所示:

    string selectQuery = "SELECT name, age FROM users";SQLiteCommand command = new SQLiteCommand(selectQuery, connection);SQLiteDataReader reader;try{reader = command.ExecuteReader();while (reader.Read()){string name = reader.GetString("name");int age = reader.GetInt32("age");Console.WriteLine($"姓名: {name}, 年龄: {age}");}reader.Close();}catch (SQLiteException ex){Console.WriteLine($"数据查询错误: {ex.Message}");}

    使用ExecuteReader方法执行查询语句,返回一个SQLiteDataReader对象。通过reader.Read方法遍历结果集,然后使用GetString、GetInt32等方法获取相应列的值。注意,获取列值时,列名或列索引要与数据库表中的定义一致。最后要记得关闭SQLiteDataReader对象,以释放资源。

4.4 更新数据

  • 构建更新语句

    更新数据使用UPDATE语句。例如,将users表中姓名为John的用户年龄更新为 21 的 SQL 语句如下:

    UPDATE users SET age = 21 WHERE name = 'John';
  • 在 C# 中执行更新操作

    构建和执行更新语句如下:

    string updateQuery = "UPDATE users SET age = @newAge WHERE name = @name";SQLiteCommand command = new SQLiteCommand(updateQuery, connection);command.Parameters.AddWithValue("@newAge", 21);command.Parameters.AddWithValue("@name", "John");try{int rowsAffected = command.ExecuteNonQuery();if (rowsAffected > 0){Console.WriteLine("数据更新成功。");}}catch (SQLiteException ex){Console.WriteLine($"数据更新错误: {ex.Message}");}

    同样使用参数化查询来构建更新语句,通过ExecuteNonQuery方法执行更新操作,并根据返回的受影响行数判断更新是否成功。

4.5 删除数据

  • 构建删除语句

    删除数据使用DELETE FROM语句。例如,删除users表中姓名为John的用户记录的 SQL 语句如下:

    DELETE FROM users WHERE name = 'John';
  • 在 C# 中执行删除操作

    构建和执行删除语句如下:

    string deleteQuery = "DELETE FROM users WHERE name = @name";SQLiteCommand command = new SQLiteCommand(deleteQuery, connection);command.Parameters.AddWithValue("@name", "John");try{int rowsAffected = command.ExecuteNonQuery();if (rowsAffected > 0){Console.WriteLine("数据删除成功。");}}catch (SQLiteException ex){Console.WriteLine($"数据删除错误: {ex.Message}");}

    还是使用参数化查询构建删除语句,执行ExecuteNonQuery方法后,根据返回的受影响行数判断删除是否成功。

结束语

        亲爱的朋友,无论前路如何漫长与崎岖,都请怀揣梦想的火种,因为在生活的广袤星空中,总有一颗属于你的璀璨星辰在熠熠生辉,静候你抵达。

         愿你在这纷繁世间,能时常收获微小而确定的幸福,如春日微风轻拂面庞,所有的疲惫与烦恼都能被温柔以待,内心永远充盈着安宁与慰藉。

        至此,文章已至尾声,而您的故事仍在续写,不知您对文中所叙有何独特见解?期待您在心中与我对话,开启思想的新交流。


--------------- 业精于勤,荒于嬉 ---------------

请添加图片描述

--------------- 行成于思,毁于随 ---------------

优质源码分享

  • 【百篇源码模板】html5各行各业官网模板源码下载

  • 【模板源码】html实现酷炫美观的可视化大屏(十种风格示例,附源码)

  • 【VUE系列】VUE3实现个人网站模板源码

  • 【HTML源码】HTML5小游戏源码

  • 【C#实战案例】C# Winform贪吃蛇小游戏源码


在这里插入图片描述


     💞 关注博主 带你实现畅游前后端

     🏰 大屏可视化 带你体验酷炫大屏

     💯 神秘个人简介 带你体验不一样得介绍

     🎀 酷炫邀请函 带你体验高大上得邀请


     ① 🉑提供云服务部署(有自己的阿里云);
     ② 🉑提供前端、后端、应用程序、H5、小程序、公众号等相关业务;
     如🈶合作请联系我,期待您的联系。
    :本文撰写于CSDN平台,作者:xcLeigh所有权归作者所有) ,https://blog.csdn.net/weixin_43151418,如果相关下载没有跳转,请查看这个地址,相关链接没有跳转,皆是抄袭本文,转载请备注本文原地址。


     亲,码字不易,动动小手,欢迎 点赞 ➕ 收藏,如 🈶 问题请留言(评论),博主看见后一定及时给您答复,💌💌💌


原文地址:https://blog.csdn.net/weixin_43151418/article/details/144309263(防止抄袭,原文地址不可删除)


http://www.ppmy.cn/ops/141740.html

相关文章

用线程池,注意避坑

前言 线程池是 Java 中处理多线程的强大工具,但它不仅仅是“直接用就完事”的工具。 很多小伙伴在用线程池时,因为配置不当或忽略细节,踩过许多坑。 今天跟大家一起聊聊线程池中容易踩的 10 个坑,以及如何避免这些坑&#xff0…

【C++初阶】第8课—标准模板库STL(string_2)

文章目录 1. string类对象遍历操作1.1 标准库中的成员函数begin( )和end( )1.2 标准库中的成员函数rbegin( )和rend( )1.3 C11引入的4个标准库中的成员函数 2. string类对象的访问2.1 operator[ ]运算符重载访问字符串字符2.2 公有成员函数at访问字符2.3 公有成员函数back()和f…

基于 Python 的机器学习模型部署到 Flask Web 应用:从训练到部署的完整指南

目录 引言 技术栈 步骤一:数据预处理 步骤二:训练机器学习模型 步骤三:创建 Flask Web 应用 步骤四:测试 Web 应用 步骤五:模型的保存与加载 保存模型 加载模型并在 Flask 中使用 步骤六:Web 应用…

UE5 C+、C++、C# 构造方法区别示例

我们对比一下UE C、C 、C#的构造方法&#xff1a; 1. UE4 C例子&#xff1a; // 声明和构造合并在一起static ConstructorHelpers::FObjectFinder<UTexture2D> CrosshairTexObj(TEXT("/Game/Path"));// 使用加载的资源UTexture2D* Texture CrosshairTexObj.…

yarn 安装问题

Couldn’t find package “regenerator-runtime” on the “npm” registry. Error: Couldn’t find package “watch-size” on the “npm” regist 标题Error: Couldn’t find package “babel-helper-vue-jsx-merge-props” on the “npm” registry. Error: Couldn’t f…

React 第十六节 useCallback 使用详解注意事项

useCallback 概述 1、useCallback 是在React 中多次渲染缓存函数的 Hook&#xff0c;返回一个函数的 memoized的值&#xff1b; 2、如果多次传入的依赖项不变&#xff0c;那么多次定义的时候&#xff0c;返回的值是相同的,防止频繁触发更新&#xff1b; 3、多应用在 父组件为函…

C++面试:HTTP1.0/1.1,HTTP2.0,HTPP3.0的区别

1.你对HTTP1.0/1.1&#xff0c;HTTP2.0&#xff0c;HTPP3.0有什么了解&#xff1f; 答&#xff1a;HTTP1.0&#xff1a; ①属于无连接式&#xff0c;每次发送HTTP请求都需要建立TCP连接。 ②会造成发送时的对头阻塞&#xff0c;当上一个请求没有应答&#xff0c;当前的请求就会…

大数据常用的算法--常用的分类算法

概述 分类算法是根据数据特征来预测数据的类别。 分类算法是一种监督学习&#xff08;Supervised Learning&#xff09;方法&#xff0c;它需要一个已知的类别标签的训练数据集&#xff0c;通过学习这个数据集来预测新的数据点的类别。例如&#xff0c;在电子邮件过滤系统中&am…