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

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

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(防止抄袭,原文地址不可删除)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/935655.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Redis篇-6--原理篇5--单线程模型

1、概述 Redis 采用单线程模型来处理客户端请求,这意味着在任意时刻只有一个命令被执行。这种设计简化了 Redis 的实现,并确保了高并发环境下的数据一致性。尽管 Redis 是单线程的,但它通过高效的内存管理和网络 I/O 操作,仍然能…

Spring Boot + Spring AI快速体验

Spring AI快速体验 1 什么是Spring AI主要功能 2 快速开始2.1 版本说明2.2 配置文件2.3 pom依赖2.3.1 spring maven仓库2.3.2 核心依赖 2.4 定义ChatClient2.5 启动类2.6 测试 3 参考链接 1 什么是Spring AI Spring AI是Spring的一个子项目,是Spring专门面向于AI的…

【Unity】【VR开发】摩托车游戏开发笔记1-摩托车手把旋转时轴位移问题

【背景】 做VR摩托车游戏时,需要给摩托车加仿真控制,其中就有抓握龙头旋转时转弯的实现。 实现分两部分,一个是视觉上的动画实现,一个是摩托车实际的位移控制实现。先实现动画效果,也就是抓握把手能够让车头左右旋转。这里先简单一点,实现左手单手让车头旋转。 【设计】…

uniapp -- 实现页面滚动触底加载数据

效果 首选,是在pages.json配置开启下拉刷新 {"path": "pages/my/document/officialDocument","style": {"navigationStyle":</

丹摩|丹摩助力selenium实现大麦网抢票

丹摩&#xff5c;丹摩助力selenium实现大麦网抢票 声明&#xff1a;非广告&#xff0c;为用户体验 1.引言 在人工智能飞速发展的今天&#xff0c;丹摩智算平台&#xff08;DAMODEL&#xff09;以其卓越的AI算力服务脱颖而出&#xff0c;为开发者提供了一个简化AI开发流程的强…

Android系统(android app和系统架构)

文章目录 AndroidAndroid Apps四大组件 Android系统Platform API之下&#xff1a;一个微笑内核adb(Android Debug Bridge) Android包管理机制Android的Intent机制参考 Android LinuxFrameworkJVM 在Linux/Java上做了个二次开发&#xff1f;并不完全是&#xff1a;Android定义…

小程序开发中的插件生态与应用-上

更多精彩内容都在公zhong号&#xff1a;小白的大数据之旅 在小程序的开发过程中&#xff0c;插件作为扩展功能、提升效率的重要工具&#xff0c;扮演着不可或缺的角色。它们不仅能够帮助开发者快速集成复杂的功能模块&#xff0c;还能优化开发流程&#xff0c;缩短项目周期。 …

An error happened while trying to locate the file on the Hub and we cannot f

An error happened while trying to locate the file on the Hub and we cannot find the requested files in the local cache. Please check your connection and try again or make sure your Internet connection is on. 关于上述comfy ui使用control net预处理器的报错问…

Java 实现给pdf文件指定位置盖章功能

Java 实现给pdf文件指定位置盖章功能 开发中遇到一个需求, 需要给用户上传的的pdf文件, 指定位置上盖公章的功能, 经过调研和对比, 最终确定实现思路. 这里是使用pdf文件中的关键字进行章子的定位, 之所以这样考虑是因为如果直接写死坐标的话, 可能会出现因pdf大小, 缩放, 盖章…

Vmware的网络适配器的NAT模式和桥接模式有何区别?如何给Uubunt系统添加桥接网卡?

Vmware的网络适配器的NAT模式和桥接模式有何区别&#xff1f; 如何给Uubunt系统添加桥接网卡? 步骤如下&#xff1a;

主机连不上CentOS7虚拟机Redis

CentOS7中的Redis连不上主机 是否ping通 先尝试主机是否能Ping通虚拟机 虚拟机中查看ens33对应的地址&#xff0c;使用ifconfig 再在主机上尝试Ping&#xff0c;如果无法Ping通&#xff0c;先排除是否是虚拟机NAT或者桥接模式配置的问题 redis.conf配置 我是按照黑马的教…

vue element 切换 select 下拉框的 单选多选报错

今天根据项目需求&#xff0c;需要对下拉框进行&#xff0c;单双选判断&#xff0c;当多选切换成多选&#xff0c;没有问题但是单选切换成多选报错如下 页面是要求 选择in或者notin时候 多选 经过好长时间摸索&#xff0c;解决了&#xff0c;最后使用select的失去焦点事件解决的…

VBA高级应用30例应用在Excel中的ListObject对象:向表中添加注释

《VBA高级应用30例》&#xff08;版权10178985&#xff09;&#xff0c;是我推出的第十套教程&#xff0c;教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开&#xff0c;这套教程案例与理论结合&#xff0c;紧贴“实战”&#xff0c;并做“战术总结”&#xff0c;以…

BA和CS算法中的Levy飞行策略

Levy飞行策略通过模拟自然界中动物的长距离迁徙行为&#xff0c;指导粒子进行更大范围的搜索&#xff0c;有助于算法快速找到全局最优解。它是一种具有独特优势的随机行为策略&#xff0c;模拟随机游走或搜索过程中的步长和方向&#xff0c;其步长的概率分布为重尾分布&#xf…

JavaEE多线程案例之阻塞队列

上文我们了解了多线程案例中的单例模式&#xff0c;此文我们来探讨多线程案例之阻塞队列吧 1. 阻塞队列是什么&#xff1f; 阻塞队列是⼀种特殊的队列.也遵守"先进先出"的原则. 阻塞队列是⼀种线程安全的数据结构,并且具有以下特性: 当队列满的时候,继续⼊队列就会…

[Maven]下载安装、配置与简介

很多框架的下载使用的流程和思路是差不多的&#xff0c;这里以maven做详细介绍。 下载安装与配置变量 下载 首先&#xff0c;我们要使用maven&#xff0c;必须先下载它的相关文件。想要下载&#xff0c;我们可以直接搜索maven。找到它的官网。这里不绕弯子&#xff0c;直接给出…

centos部署SkyWalking以及在springcloud项目中搭配loki使用

文章目录 场景SkyWalking介绍部署部署Storage [单机版Elasticsearch]部署SkyWalking OAP [下载地址](https://skywalking.apache.org/downloads/#SkyWalkingAPM)部署SkyWalking Java Agent springCloud 使用举例追踪ID写入loki 场景 SkyWalking是应用性能监控平台&#xff0c;可…

FastAPI vs Flask 选择最适合您的 Python Web 框架

文章目录 1. 简介2. 安装和设置3. 路由和视图4. 自动文档生成5. 数据验证和序列化6. 性能和异步支持结论 在 Python Web 开发领域&#xff0c;FastAPI 和 Flask 是两个备受欢迎的选择。它们都提供了强大的工具和功能&#xff0c;但是在某些方面有所不同。本文将比较 FastAPI…

xshell连接虚拟机,更换网络模式:NAT->桥接模式

NAT模式&#xff1a;虚拟机通过宿主机的网络访问外网。优点在于不需要手动配置IP地址和子网掩码&#xff0c;只要宿主机能够访问网络&#xff0c;虚拟机也能够访问。对外部网络而言&#xff0c;它看到的是宿主机的IP地址&#xff0c;而不是虚拟机的IP。但是&#xff0c;宿主机可…

常见的网络攻击手段

IP 欺骗 IP 是什么? 在网络中&#xff0c;所有的设备都会分配一个地址。这个地址就仿佛小蓝的家地址「多少号多少室」&#xff0c;这个号就是分配给整个子网的&#xff0c;「室」对应的号码即分配给子网中计算机的&#xff0c;这就是网络中的地址。「号」对应的号码为网络号…