当前位置: 首页 > article >正文

.NET 控制台应用程序连接 MySQL 数据库实现增删改查

概述

本文旨在指导开发者如何通过.NET控制台应用程序与MySQL数据库进行交互,从而执行基本的数据操作:创建(增加)、读取(查询)、更新以及删除记录。这样的技能对于任何需要数据持久化的应用程序来说都是基础且重要的,无论是在Web应用还是桌面软件中都非常有用。我们将使用C#语言配合MySql.Data库来完成这一系列任务。

技术模块介绍

1. MySQL 数据库

MySQL是一款开源的关系型数据库管理系统,以其速度、可靠性和易用性而闻名。它支持多种存储引擎,并提供了强大的SQL功能集,非常适合用于处理复杂的数据结构。

2. MySql.Data 库

MySql.Data是由MySQL官方提供的ADO.NET驱动程序,允许开发者直接从.NET平台访问MySQL数据库。该库完全符合ADO.NET规范,使得用户可以轻松地利用标准的.NET API进行数据库编程。

3. ADO.NET

ADO.NET是.NET框架的一部分,提供了一套丰富的类库用来访问关系型和非关系型数据源。核心组件包括但不限于Connection, Command, 和 DataReader等,这些对象为执行SQL语句及管理结果集提供了强大的支持。

开发步骤

第一步:环境搭建

确保安装以下工具或软件:

  • Visual Studio 或其他支持C#开发的IDE
  • MySQL Server
  • 通过下载的绑定资源导入 MySql.Data 库到项目中

第二步:建立数据库连接

首先,在程序开始时初始化一个到MySQL服务器的连接。为此我们需要定义一个全局的MySqlConnection实例,并在主函数内尝试打开此连接。

using MySql.Data.MySqlClient;
using System;

class Program
{
    static MySqlConnection conn = null;

    static void Main(string[] args)
    {
        string connectionString = "server=localhost;User Id=root;password=your_password;Database=studymysql;Charset=utf8";
        conn = new MySqlConnection(connectionString);
        
        try
        {
            conn.Open();
            Console.WriteLine("成功连接到数据库。");
        }
        catch (Exception ex)
        {
            Console.WriteLine($"错误: {ex.Message}");
            return;
        }

        // 在这里添加后续的操作调用
    }
}

请记得替换connectionString中的密码和其他配置项以匹配你的本地设置。

第三步:实现插入操作

接下来,我们实现向表userinfo中插入新记录的功能。这涉及到创建一个新的MySqlCommand对象并指定要执行的SQL命令文本。

static void Add()
{
    MySqlCommand cmd = new MySqlCommand("INSERT INTO userinfo (name, age) VALUES (@name, @age)", conn);
    cmd.Parameters.AddWithValue("@name", "xixi");
    cmd.Parameters.AddWithValue("@age", 96);

    int rowsAffected = cmd.ExecuteNonQuery();
    if (rowsAffected > 0)
    {
        Console.WriteLine($"{rowsAffected} 条记录被插入。");
    }
    else
    {
        Console.WriteLine("没有记录被插入。");
    }
}

这里使用了参数化查询防止潜在的安全风险如SQL注入攻击。

第四步:实现删除操作

删除操作也遵循相似的模式,只是这次我们要构造一条DELETE语句。

static void Delete()
{
    MySqlCommand cmd = new MySqlCommand("DELETE FROM userinfo WHERE id=@id", conn);
    cmd.Parameters.AddWithValue("@id", 1);  // 假设要删除ID为1的记录

    int rowsDeleted = cmd.ExecuteNonQuery();
    Console.WriteLine($"{rowsDeleted} 条记录被删除。");
}

第五步:实现更新操作

更新现有记录的信息可以通过修改相应的字段值来完成。

static void Update()
{
    MySqlCommand cmd = new MySqlCommand("UPDATE userinfo SET name=@newName, age=@newAge WHERE id=@id", conn);
    cmd.Parameters.AddWithValue("@newName", "xoxo");
    cmd.Parameters.AddWithValue("@newAge", 123);
    cmd.Parameters.AddWithValue("@id", 2);  // 更新ID为2的记录

    int rowsUpdated = cmd.ExecuteNonQuery();
    Console.WriteLine($"{rowsUpdated} 条记录被更新。");
}

第六步:实现查询操作

最后,让我们编写一个方法来从数据库中检索信息。

static void Query()
{
    MySqlCommand cmd = new MySqlCommand("SELECT * FROM userinfo WHERE age=@age", conn);
    cmd.Parameters.AddWithValue("@age", 66);

    using (MySqlDataReader reader = cmd.ExecuteReader())
    {
        while (reader.Read())
        {
            int id = reader.GetInt32("id");
            string name = reader.GetString("name");
            int age = reader.GetInt32("age");

            Console.WriteLine($"ID: {id}, 名字: {name}, 年龄: {age}");
        }
    }
}

最终代码整合

现在,所有功能都已准备好,只需在Main方法里按需调用它们即可。

static void Main(string[] args)
{
    // ... 连接数据库的代码 ...

    // 可选择性地启用以下行以测试不同功能
    // Add();
    // Delete();
    // Update();
    Query();

    Console.ReadKey();  // 等待按键退出
    conn.Close();
}

通过上述步骤,你已经学会了如何使用.NET控制台应用程序与MySQL数据库进行交互,执行CRUD操作。希望这篇文章对你有所帮助!如果遇到问题或者想要进一步了解某个特定方面,请随时留言讨论。


http://www.kler.cn/news/323530.html

相关文章:

  • mysql数据库设置主从同步
  • 自动驾驶电车难题的康德式道德决策
  • 黑马头条day6-kafka及异步通知文章上下架
  • Spring 全家桶使用教程 —— 后端开发从入门到精通
  • C#——switch案例讲解
  • 计算机毕业设计 校园失物招领网站的设计与实现 Java实战项目 附源码+文档+视频讲解
  • 58 深层循环神经网络_by《李沐:动手学深度学习v2》pytorch版
  • 【论文写作】描述一个模型比另一个模型效果好时
  • sentinel原理源码分析系列(二)-动态规则和transport
  • 如何在openEuler上安装和配置openGauss数据库
  • linux编辑文件保存退出的实操讲解
  • JVM基本了解
  • 神经网络激活函数
  • RabbitMQ 高级特性——重试机制
  • 【前端面试题】Vue 3 生命周期钩子的执行顺序详解
  • 2024年中国电子学会青少年软件编程(Python)等级考试(二级)核心考点速查卡
  • Supervisor进程管理工具安装
  • Python爬虫获取指定内容
  • django drf 统一处理操作人和时间字段
  • leetcode-238. 除自身以外数组的乘积-前n项的思想
  • 一键降重:芝士AI如何简化论文查重过程?
  • 05-成神之路_ambari_Ambari实战-013-代码生命周期-metainfo-configFiles详解
  • 【第十六章:Sentosa_DSML社区版-机器学习之生存分析】
  • sql server每天定时执行sql语句
  • 【Python快速学习笔记01】下载解释器/环境变量配置/PyCharm下载/第一个代码
  • 浅谈软件安全开发的重要性及安全开发实践
  • NSSCTF [SWPUCTF 2021 新生赛]非常简单的逻辑题
  • CodeFormer模型构建指南
  • 网络安全TARA分析
  • [Linux]磁盘分区指令