ASP.NET |日常开发中连接Mysql数据库增删改查详解

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

ASP.NET |日常开发中连接Mysql数据库增删改查详解

  • 前言
  • 一、连接 MySQL 数据库
    • 1.1 安装和引用相关库
    • 1.2 建立数据库连接
  • 二、数据库增删改查操作
    • 2.1 插入数据(Insert)
    • 2.2 查询数据(Select)
    • 2.3 更新数据(Update)
    • 2.4 删除数据(Delete)
  • 结束语
  • 优质源码分享

ASP.NET |日常开发中连接Mysql数据库增删改查详解,在ASP.NET日常开发中,连接MySQL数据库并进行增删改查(CRUD)操作是一个常见的任务。为了实现这一功能,你通常需要使用一个MySQL数据库驱动程序,比如MySql.Data.MySqlClient,它是MySQL官方提供的.NET驱动程序。以下是一个详细的步骤指南,介绍如何在ASP.NET应用程序中连接MySQL数据库并执行CRUD操作。

前言

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

一、连接 MySQL 数据库

1.1 安装和引用相关库

    在ASP.NET项目中连接 MySQL 数据库,首先需要安装MySql.Data库。可以通过 NuGet 包管理器进行安装。安装完成后,在代码文件中添加using MySql.Data.MySqlClient;引用。

1.2 建立数据库连接

  • 配置连接字符串

    连接字符串包含了连接数据库所需的信息,如服务器地址、端口、数据库名称、用户名和密码等。例如,一个典型的连接字符串如下:

    string connectionString = "server=localhost;port=3306;user=root;password=your_password;database=your_database";

    其中,server是 MySQL 服务器的地址,localhost表示本地服务器;port是 MySQL 服务的端口号,默认是 3306;user和password是用于登录数据库的用户名和密码;database是要连接的数据库名称。

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

    使用MySqlConnection类来创建连接对象,并通过Open方法打开连接。例如:

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

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

二、数据库增删改查操作

2.1 插入数据(Insert)

  • 构建插入语句

    插入数据需要使用INSERT INTO语句。例如,假设有一个名为students的表,包含id(自增长主键)、name和age字段,插入一条学生记录的 SQL 语句如下:

    INSERT INTO students (name, age) VALUES ('John', 20);

    在 C# 代码中,可以这样构建插入语句并执行:

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

    这里使用了参数化查询,通过Parameters.AddWithValue方法添加参数。参数化查询不仅可以防止 SQL 注入攻击,还可以方便地动态设置参数值。ExecuteNonQuery方法用于执行不返回结果集的 SQL 语句,如INSERT、UPDATE和DELETE语句,它返回受影响的行数。

2.2 查询数据(Select)

  • 构建查询语句

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

    SELECT name, age FROM students;

    在 C# 代码中,可以这样执行查询操作:

    string selectQuery = "SELECT name, age FROM students";
    MySqlCommand command = new MySqlCommand(selectQuery, connection);
    MySqlDataReader 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 (MySqlException ex)
    {
        Console.WriteLine($"数据查询错误: {ex.Message}");
    }

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

2.3 更新数据(Update)

  • 构建更新语句

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

    UPDATE students SET age = 21 WHERE name = 'John';

    在 C# 代码中,可以这样构建和执行更新语句:

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

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

2.4 删除数据(Delete)

  • 构建删除语句

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

    DELETE FROM students WHERE name = 'John';

    在 C# 代码中,可以这样构建和执行删除语句:

    string deleteQuery = "DELETE FROM students WHERE name = @name";
    MySqlCommand command = new MySqlCommand(deleteQuery, connection);
    command.Parameters.AddWithValue("@name", "John");
    try
    {
        int rowsAffected = command.ExecuteNonQuery();
        if (rowsAffected > 0)
        {
            Console.WriteLine("数据删除成功。");
        }
    }
    catch (MySqlException 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/144309301(防止抄袭,原文地址不可删除)

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

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

相关文章

Go框架比较:goframe、beego、iris和gin

由于工作需要,这些年来也接触了不少的开发框架,Golang的开发框架比较多,不过基本都是Web"框架"为主。这里稍微打了个引号,因为大部分"框架"从设计和功能定位上来讲,充其量都只能算是一个组件&…

LLaMA-Factory 单卡3080*2 deepspeed zero3 微调Qwen2.5-7B-Instruct

环境安装 git clone https://gitcode.com/gh_mirrors/ll/LLaMA-Factory.git 下载模型 pip install modelscope modelscope download --model Qwen/Qwen2.5-7B-Instruct --local_dir /root/autodl-tmp/models/Qwen/Qwen2.5-7B-Instruct 微调 llamafactory-cli train \--st…

华为ensp--BGP路径选择-AS_Path

学习新思想,争做新青年,今天学习的是BGP路径选择-AS_Path 实验目的: 理解AS_Path属性的概念 理解通过AS_Path属性进行选路的机制 掌握修改AS_Path属性的方法 实验内容: 本实验模拟了一个运营商网络场景,所有路由器都运行BGP协议&#xff…

泛微OA定时任务的设置

泛微OA定时任务 背景 在日常流程开发中,是需要和别的系统进行连接的,比如OA和SAP之间的数据传输。 SAP涉及到的业务数据在生成之后,需要在OA生成对应的流程进行信息的审核,但是毕竟是两个不同的系统,所以数据同步是需…

【Harmony Next】多个图文配合解释DevEco Studio工程中,如何配置App相关内容,一次解决多个问题?

解决App配置相关问题列表 1、Harmony Next如何配置图标? 2、Harmony Next如何配置App名称? 3、Harmony Next如何配置版本号? 4、Harmony Next如何配置Bundle ID? 5、Harmony Next如何配置build号? 6、Harmony Next多语言配置在哪…

如何从0构建一个flask项目,直接上实操!!!

项目结构 首先,创建一个项目目录,结构如下: flask_app/ │ ├── app.py # Flask 应用代码 ├── static/ # 存放静态文件(如CSS、JS、图片等) │ └── style.css # 示例…

计算机网络B重修班-期末复习

[TOC] (计算机网络B重修班-期末复习) 一、单选 (20题,1分/题,共20分) 二、判断 (10题,1分/题,共10分) 三、填空 (10题,1分/题,共10…

js日期时区问题

东八区与0时区 东八区 我们所在地域使用的是 东八区 时区,所以平常使用的电脑设置的多是东八时区 js获取的时间格式 0时区 0时区 也叫 协调世界时 js获取的时间格式 数据库读取时间数据 平常从数据读取的时间默认是0时区的,成以下格式: 2024…

Ubantu22系统安装Miniconda3

1、Anaconda和Miniconda异同 清华源镜像的Miniconda3和Anaconda都是用于管理Python环境和软件包的工具,但它们之间存在一些关键的不同之处。下面将分别介绍它们的特点以及使用清华源镜像的差异。 相同点: (1)功能相似&#xff1a…

锂电池SOH预测 | 基于BiGRU双向门控循环单元的锂电池SOH预测,附锂电池最新文章汇集

锂电池SOH预测 | 基于BiGRU双向门控循环单元的锂电池SOH预测,附锂电池最新文章汇集 目录 锂电池SOH预测 | 基于BiGRU双向门控循环单元的锂电池SOH预测,附锂电池最新文章汇集预测效果基本描述程序设计参考资料 预测效果 基本描述 锂电池SOH预测 | 基于Bi…

安装opnet14.5遇到的问题

安装opnet遇到的问题 我是按照这个教程来安装的。 然后遇到了两个问题&#xff1a; 1、“mod_dirs”目录问题 Can’t enable ETS scripting support due to missing files。 This is likely because:<opnet_release_dir>\sys\lib is notinclude in the “mod_dirs” pre…

以腾讯混元模型为例,在管理平台上集成一个智能助手

背景 前几天&#xff0c;公司的同事们一起吃了个饭&#xff0c;餐桌上大家聊到大模型的落地场景。我个人在去年已经利用百度千帆平台写过案例&#xff0c;并发过博客&#xff08;传送门&#x1f449;&#xff1a;利用文心千帆打造一个属于自己的小师爷&#xff09;&#xff0c…

软件实验室认可|实验室比对的形式与方法

实验室比对是软件测试实验室在申请软件实验室认可必须要做的一类质量控制活动。实验室比对包括实验室间比对&#xff0c;和实验室内比对。实验室间比对指的是按照预先规定的条件&#xff0c;由两个或多个实验室对相同或类似的物品进行测量或检测的组织、实施和评价。实验室内比…

酷克数据携手江西移动入选“星河(Galaxy)”数据库潜力案例

2024 年 12 月 18 - 19 日&#xff0c;为推动打造行业交流平台&#xff0c;驱动产业创新共荣&#xff0c;大数据技术标准推进委员会以“数据重塑价值 智能链接未来”为主题&#xff0c;在北京召开为期两天的“2024 数据资产管理大会”。 在会上&#xff0c;第八届大数据“星河&…

【Verilog】UDP用户原语

User-defined primitives 概述基本语法组合逻辑的UDP时序逻辑的UDPUDP 符号表 Verilog HDL&#xff08;简称 Verilog &#xff09;是一种硬件描述语言&#xff0c;用于数字电路的系统设计。可对算法级、门级、开关级等多种抽象设计层次进行建模。 Verilog 不仅定义了语法&…

《Java核心技术I》Swing中滚动窗格

滚动窗格 Swing中文本区没有滚动条&#xff0c;如需要&#xff0c;可以将文本区放在 滚动窗格(scrollpane)中。 textArea new JTextArea(8,40); var scrollPane new JScrollPane(textArea); 添加到滚动窗格不是文本区特有的&#xff0c;所有组件都可以。 注释&#xff1a;JTe…

Node.js day-01

01.Node.js 讲解 什么是 Node.js&#xff0c;有什么用&#xff0c;为何能独立执行 JS 代码&#xff0c;演示安装和执行 JS 文件内代码 Node.js 是一个独立的 JavaScript 运行环境&#xff0c;能独立执行 JS 代码&#xff0c;因为这个特点&#xff0c;它可以用来编写服务器后端…

排序算法(7):堆排序

问题 排序 [30, 24, 5, 58, 18, 36, 12, 42, 39] 堆排序 堆排序是一种基于堆数据结构的排序算法。堆是一个近似完全二叉树的结构&#xff0c;即除了最后一层外&#xff0c;每一层都必须填满&#xff0c;且最后一层从左往右填充。 堆可以分为大根堆和小根堆。在大根堆中&…

操作系统如何管理进程所用的资源

PCB 操作内核的作用 进程与模式的切换 软中断——相当于审核——审核有没有访问权限什么的 操作系统以什么方式提供服务&#xff1f; 进程的创建和终止 线程 七状态图&#xff0c;挂起

罗德与施瓦茨NRP33SN,一款独立、特性齐全的功率探头

罗德与施瓦茨NRP33SN功率探头概述 ROHDE & SCHWARZ NRP33S 三路二极管功率传感器 罗德与施瓦茨 NRP33S 三路二极管功率传感器是一款独立 、特性齐全的仪器。它们可以通过罗德与施瓦茨 NRP2 基 本单元、通过 USB 的笔记本电脑/PC 以及许多罗德与施瓦 茨仪器&#xff08;例如…