返回顶部
首页 > 资讯 > 数据库 >[C#] WinForm/WPF 实现数据库连接与操作(MySQL)
  • 305
分享到

[C#] WinForm/WPF 实现数据库连接与操作(MySQL)

c#数据库wpfmysql 2023-09-03 07:09:16 305人浏览 安东尼
摘要

目录 🌿前言 🌿MySQL数据库简介 🌿数据库的基本概念 🌿ADO.NET体系结构 数据提供程序(.NET Framework Data Provider)程序数

目录

🌿前言

🌿MySQL数据库简介

🌿数据库的基本概念

🌿ADO.NET体系结构

🌿数据库的访问形式

🌿数据库的连接

🌿实现增查改删(CRUD)操作

🌿前言

数据库的使用在涉及或以信息管理为主的软件设计中是不可或缺的一部分。开发人员需要了解数据库基本概念,熟系对数据库的使用,包括基本的可视化软件管理,sql语句命令操作。为实现窗体软件(winform/WPF)对数据库进行读取和写入操作,需要先了解数据库的访问形式,了解ADO.net结构,掌握使用程序对数据库进行连接实现,能够对数据库进行增删查改操作。本文从数据库的基本使用,到使用程序实现增删查改操作,借助.NET api文档理解相关数据库操作类,完整介绍WinFORM/WPF实现数据库连接与操作的方法。[注:本文多以个人理解与应用测试角度编写,如有表达不妥或结构错误的部分,欢迎批评指正。]

🌿Mysql数据库简介

mysql是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一。2006年,Oracle收购InnoDB引擎,这深刻影响了后来MySQL的发展——因为MySQL被卖身两次后归于Oracle麾下。2008年,瑞典MySQLAB公司被Sun收购。次年,Sun被Oracle收购,MySQL数据库被一并纳入Oracle,进入OracleMySQL时代。2010年发布的MySQL5.5版本中,将其默认的存储引擎由MyISAM更换为InnoDB。

🌿数据库的基本概念

比较普遍的定义是,数据库(Database,DB)是一个长期储存在计算机内的、有组织、有共享、统一管理的数据集合。数据库的基本组成包括字段、记录、数据表、数据库和主键。

字段Field二维表中的列,描述关系的属性特征
记录Record二维表中的行
数据表Table没有重复的行列构成的关系表
数据库Database多个相关联数据表的集合
主键Key

能够唯一标识不同记录的单个或多个字段的组合

🌿ADO.NET体系结构

.NET编程环境中优先使用数据访问接口ADO.NET提供了平台互用性和可伸缩的数据访问。ADO.NET 提供对诸如 SQL Server 和 XML 这样的数据源以及通过 OLE DB 和 ODBC 公开的数据源的一致访问。 共享数据的使用方应用程序可以使用 ADO.NET 连接到这些数据源,并可以检索、处理和更新其中包含的数据。

ADO.NET体系结构图

数据提供程序(.NET Framework Data Provider)

Connection:数据连接类,建立与数据源的连接

Command:数据命令类,使用SQL语句对数据源执行操作命令,用于修改数据、查询数据、运行存储过程,其中,Parameter为参数,参数前面有一个“@”符号,表示它将被视为参数

DataReader:数据读取类,用于从数据源读取数据流

DataAdapter:数据流转类,Fill()方法将数据源数据填充至“内存”数据集DataSet,Update()方法将数据集中的数据更新至数据源中

程序数据集(DataSet)

实现独立于任何数据源的断开式数据访问,其包含任意多个数据表(DataTable)

🌿数据库的访问形式

非断开式:持续保持连接,直到执行关闭命令,占用连接资源,数据更新及时

断开式:数据完成读取/更新后立即断开,执行效率高,占用时间短,数据更新不及时

🌿数据库的连接

使用Connection对象实现数据库的连接,其提供Open()方法进行数据库的连接,Close()方法断开连接。编写连接语句,将其作为参数传入Connection类的构造方法中。对于使用MySQL数据库时,可以先使用NuGet包管理器对项目安装MySql.Data的资源包,并引用相关命名空间。

using MySql.Data.MySqlClient;private void ConnectionDatabase(){    string conStr = "server=localhost;user id=root;passWord=123456;database=studentmanage";    MySqlConnection con = new MySqlConnection(conStr);    con.Open();    MessageBox.Show("数据库连接成功!");    con.Close();}

在具体使用时,要根据自己在安装MySQL时的相关配置,输入对应的账号密码。为了保证封装特性以及设计模式中的开闭原则,我们通常将数据库的连接语句写在配置文件中,后期对软件的使用修改时只需操作配置文件即可,无需修改原有代码。对于配置文件,我们需要向其中加入键值对。

调用相关命名空间后,在方法中我们读取配置文件中的键值。

using System.Configuration;MySqlConnection conn=null;string connStr = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString;conn = new MySqlConnection(connStr);conn.Open();

在大型项目中,我们一般定义一个类,专门用于实现对数据库的连接和操作,在该类中设置一个Connection属性,每当调用到该属性时,就自动实现对数据库的连接。

using MySql.Data.MySqlClient;using System;using System.Collections.Generic;using System.Configuration;using System.Data;using System.Linq;using System.Text;using System.Threading.Tasks;namespace LibraryManage{    internal class DBOper    {        private static MySqlConnection conn;        //Connection属性,调用时建立对数据库的连接        public static MySqlConnection Connection        {            get            {                //无Connection对象时                if (conn == null)                {                    string connStr = ConfigurationManager.ConnectionStrings["ConStr"].ConnectionString;                    conn = new MySqlConnection(connStr);                    conn.Open();                }                //Connection对象关闭连接时                else if (conn.State==System.Data.ConnectionState.Closed)                 {conn.Close(); }                //Connection对象断开连接时                else if (conn.State == System.Data.ConnectionState.Broken)                {conn.Close(); conn.Open(); }                return conn;            }        }    }}

🌿实现增查改删(CRUD)操作

对于数据库的操作,一般掌握顺序是查增改删,下面均以这个顺序介绍CRUD SQL常用语句与程序实现CRUD的操作步骤。

CRUD SQL常用语句

CRUD SQL 常用语句
读取
Read
select <字段列表> from <表或视图> where <查询条件>;基本查询语句
select * form <表>;查询整表(“*”通配符查询所有字段)
select <字段列表> from <表>;查询指定字段
select <字段列表> from <表> where <字段> in (<取值列表>);多取值条件查询
select <字段列表> from <表> where <字段> between <取值> and <取值>;带取值范围查询
select <字段列表> from <表> where <字段> like '%<字符串>%';包含内容查询,常用于模糊搜索功能
增加
Create
insert into <表> (<字段列表>) values (<赋值列表>);指定字段插入一条新记录
insert into <表> (<字段列表>) values (<赋值列表1>),(<赋值列表2>),...,(<赋值列表n>);同时插入多条记录

修改

Update

update <表> set <字段1>=<赋值1>,<字段2>=<赋值2>,...,<字段n>=<赋值n> where <主键条件>修改指定主键的记录
删除
Delete
delete from <表> where <主键条件>

删除指定主键的记录

程序实现数据读取操作

对于部分数据的读取,一般直接使用DataReader对象,DataReader对象通过Command对象的ExecuteReader()方法读取数据表。

string sql = "select * from mainstudent where num=" + current;string conStr = "server=localhost;user id=root;password=123456;database=studentmanage";MySqlConnection con = new MySqlConnection(conStr);con.Open();MySqlCommand cmd = new MySqlCommand(sql, con);//设置Command对象的命令和连接器参数MySqlDataReader reader = cmd.ExecuteReader();//DataReader对象通过Command对象的ExecuteReader()方法读取数据表if(reader.Read()){    textBox1.Text = reader.GetString(0).ToString();    textBox2.Text = reader.GetString(1);}reader.Close();con.Close();

若使用DataAdapter对象进行读取,则需要先设置DataSet对线,通过DataAdpter对象的Fill()方法将数据源中的数据读取到DataSet中。

string conStr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;MySqlConnection con=null;MySqlDataAdapter adapter = null;DataSet ds = null;private void button1_Click(object sender, EventArgs e){    con = new MySqlConnection(conStr);    string sql = "select * from mainstudent";    adapter = new MySqlDataAdapter(sql, con);    ds= new DataSet();    adapter.Fill(ds, "mainstudent");    dataGridView1.DataSource = ds.Tables["mainstudent"];}

在大型项目中,除了使用DataReader对象部分读取外,还可以将读取结果存在数据表(DataTable)中进行完整读取。

//GetReader()方法实现对数据库中的数据进行读取,返回DataReader对象public static MySqlDataReader GetReader(string sql)//无参读取{    MySqlCommand cmd= new MySqlCommand(sql,Connection);    return cmd.ExecuteReader();}public static MySqlDataReader GetReader(string sql,params MySqlParameter[] values)//有参读取{    MySqlCommand cmd = new MySqlCommand(sql, Connection);    cmd.Parameters.AddRange(values);    return cmd.ExecuteReader();}//GetDataTable()方法实现整个数据表的读取,返回DataTable对象public static DataTable GetDataTable(string sql){    MySqlDataAdapter da=new MySqlDataAdapter(sql,Connection);    DataSet ds= new DataSet();    da.Fill(ds);    return ds.Tables[0];}public static DataTable GetDataTable(string sql, params MySqlParameter[] values){    MySqlCommand cmd=new MySqlCommand( sql,Connection);    cmd.Parameters.AddRange(values);    MySqlDataAdapter da = new MySqlDataAdapter(cmd);    DataSet ds=new DataSet();    da.Fill(ds);    return ds.Tables[0];}

调用到这些方法时,只需要进行传参即可。

程序实现增删改操作

对数据库中的数据表进行增删改,可以使用Command对象或DataAdapter对象实现。使用Command对象对数据表进行增删改,首先需要将相关SQL语句与连接器对象参数传入Command对象的构造方法中,对于字段参数的赋值可以通过Parameters.AddWithValue()方法来实现,Command对象使用ExecuteNonQuery()方法实现对数据的修改。例如加入记录。

private void button4_Click(object sender, EventArgs e){    string sql = "insert into mainstudent(num,name,sex) values(@num,@name,@sex)";    string conStr = "server=localhost;user id=root;password=123456;database=studentmanage";    MySqlConnection con = new MySqlConnection(conStr);    MySqlCommand cmd=new MySqlCommand(sql, con);    cmd.Parameters.AddWithValue("@num", 1);    cmd.Parameters.AddWithValue("@name", "LiHua");    cmd.Parameters.AddWithValue("@sex", "Man");    con.Open();    cmd.ExecuteNonQuery();//修改时使用的方法,不会造成内存泄漏    con.Close();    MessageBox.Show("数据增添成功");}

对于修改和删除,操作方法是一样的,只需要更改相应的SQL语句以及参数设定,这里就不在演示代码。一般在大型项目中,定义一个专门类去实现对数据库的增删查改,通常写一个方法实现SQL语句的执行,进行增删改的操作,在其它类中分别定义增、改、删的方法,将参数引入,调用该类的方法。

//ExecuteCommand()方法,实现SQL语句的执行,进行增删改操作,返回受影响的行数public static int ExecuteCommand(string  sql)//无参修改{    MySqlCommand cmd=new MySqlCommand(sql, Connection);    return cmd.ExecuteNonQuery();//返回受影响的行数}public static int ExecuteCommand(string sql,params MySqlParameter[] values)//有参修改{    MySqlCommand cmd=new MySqlCommand(sql,Connection);    cmd.Parameters.AddRange(values);    return cmd.ExecuteNonQuery();}

对于参数的传入,这里给出一个例子,调用上述方法实现数据的修改。

//修改书目public static bool UpdateBook(Book book){    string sql = @"update book set bookName=@bookName,writerName=@writerName,publishClub=@publishClub,version=@version,inventory=@inventory where ISBN=@ISBN";    MySqlParameter p1 = new MySqlParameter("@bookName", book.BookName);    MySqlParameter p2 = new MySqlParameter("@writerName", book.WriterName);    MySqlParameter p3 = new MySqlParameter("@publishClub", book.PublishClub);    MySqlParameter p4 = new MySqlParameter("@version", book.Version);    MySqlParameter p5 = new MySqlParameter("@inventory", book.Inventory);    MySqlParameter p6 = new MySqlParameter ("@ISBN", book.ISBN);if (DBOper.ExecuteCommand(sql, p1, p2, p3, p4, p5, p6) == 1){    return true;}    else { return false; }}

当然,将所有的参数组成数组,再传入方法参数中也是可以的。

对于使用DataAdapter对象实现,先需要声明Command、DataAdapter和DataSet对象,建立CommandBuilder对象与DataAdapter对象之间的关联,在增加/删除记录时,可以使用DataSet的行或行集合对象去新增/删除行,最后再由DataAdapter对线执行Update()方法将数据集中的数据更新到数据源中。例如使用DataAdapter对数据进行记录增加。

string conStr = ConfigurationManager.ConnectionStrings["conStr"].ConnectionString;MySqlConnection con=null;MySqlDataAdapter adapter = null;DataSet ds = null;        private void button4_Click(object sender, EventArgs e){    MySqlCommandBuilder builder = new MySqlCommandBuilder(adapter);    DataRow r1 = ds.Tables["mainstudent"].NewRow();    r1[0] = textBox1.Text;    r1[1] = textBox2.Text;    ds.Tables[0].Rows.Add(r1);    adapter.Update(ds, "mainstudent");    dataGridView1.DataSource = ds.Tables["mainstudent"];}

这里需要注意的是,当DataAdapter对象操作单个数据表时,可以利用CommandBuilder对象自动为DataAdapter提供的Insert、Update、Delete方法。

最后,在信息管理类型的项目中,对数据库的使用是必不可少的,开发人员需要熟练掌握数据库的连接方法,悉知常用的CRUD SQL语句,利用管理对象实现对数据的增删查改操作,对于Command与DataAdapter对象的选择,本文暂不概述。

来源地址:https://blog.csdn.net/u013518478/article/details/129594959

您可能感兴趣的文档:

--结束END--

本文标题: [C#] WinForm/WPF 实现数据库连接与操作(MySQL)

本文链接: https://lsjlt.com/news/391783.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • [C#] WinForm/WPF 实现数据库连接与操作(MySQL)
    目录 🌿前言 🌿MySQL数据库简介 🌿数据库的基本概念 🌿ADO.NET体系结构 数据提供程序(.NET Framework Data Provider)程序数...
    99+
    2023-09-03
    c# 数据库 wpf mysql
  • python连接数据库操作MySQL
    参考:http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001391435131816c6...
    99+
    2024-04-02
  • Eclipse与MySQL数据库的连接(已实操)
    今天介绍的是eclipse如何与MySQL相连,相信很多小伙伴和我一样,对路径啊,什么包放在那里啊很是头疼,今天一下午才弄好就赶来分享啦,超详细哦! 以下为我个人通过总结大家的方法,自己操作以后分享给大家,如有问题,评论提问,大家商讨解决。...
    99+
    2023-09-03
    数据库 mysql java eclipse
  • golang操作连接数据库实现mysql事务示例
    目录mysql驱动posgre驱动连接postgres连接mysql初始化连接SetMaxOpenConnsSetMaxIdleConnsCRUD查询单行查询QueryRow多行查询...
    99+
    2024-04-02
  • flaskSQLAlchemy连接数据库及操作的实现
    目录介绍flask介绍SQLAlchemy介绍Flask-SQLAlchemy介绍连接步骤增删改查操作外键绑定与ORM关系映射介绍 flask介绍 Flask是一个轻量级的Pytho...
    99+
    2023-03-08
    flask SQLAlchemy连接数据库 flask SQLAlchemy
  • Node.js数据库操作之连接MySQL数据库(一)
    介绍 首先说来介绍一下MySQL(非广告)。MySQL是由瑞典的MySQL AB公司开发,后来被甲骨文公司收购。和Oracle一样,MySQL是一个典型的关系型数据库,在百度百科中,把MySQL称为是最好的...
    99+
    2022-06-04
    数据库 操作 Node
  • Eclipse与MySQL数据库的连接教程(已实操)
    今天介绍的是eclipse如何与MySQL相连,相信很多小伙伴和我一样,对路径啊,什么包放在那里啊很是头疼,今天一下午才弄好就赶来分享啦,超详细哦! 以下为我个人通过总结大...
    99+
    2023-05-19
    mysql和eclipse怎么连接数据库 eclipse和mysql的连接 eclipse怎么使用数据库
  • c++ 连接mysql数据库
            使用vs2019对window11中的数据库进行连接 1. 配置连接环境         首先需要把mysql中的头文件和库文件放入到c++项目工程中 打开安装MySQL的目录,在windows系统中如果是默认路径,应该和我...
    99+
    2023-09-03
    数据库
  • C# 连接 MySQL 数据库
    目录 一、需求 二、新建 C# 项目 三、MySQL数据库 四、MySqlHelper 五、测试 一、需求 C# 使用 MySQL 数据库的情况还是比较少的,大部分使用 Windows 平台一般使用 SQL Server,在两年前我...
    99+
    2023-09-02
    c# 数据库
  • C#连接MySQL数据库
    目录 一、引用MySql.Data.dll文件 二、连接、关闭数据库 三、数据库增删改查 附:完整代码 一、引用MySql.Data.dll文件 创建C#窗体应用程序,解决方案资源管理器中找到“引用”,右键,选择添加引用。 在MyS...
    99+
    2023-10-28
    c# 数据库 mysql
  • Java操作数据库——使用连接池连接数据库
    传统方式和连接池方式传统方式的步骤使用传统方式在Java中使用JDBC连接数据库,完成一次数据库的操作,一般有以下几个步骤: 加载驱动。 建立连接。 执行SQL语句。 释放连接。 传统方式的弊端每一次对数据库的操作都要建立一次连接,并且会将...
    99+
    2014-08-26
    java基础 java 连接池
  • Oracle数据库如何实现连接Java并操作
    今天就跟大家聊聊有关Oracle数据库如何实现连接Java并操作,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。建立连接public class DbConn { private s...
    99+
    2023-05-31
    java oracle 数据库
  • 基于C++实现Mysql数据库连接池实例
    目录项目技术点项目意义项目实现Connection设计ConnectionPool设计项目复杂接口细节刨析项目技术点 C语言进行mysql数据库编程无锁单例基于STL队列加C++11新特性保证线程安全实现的生产者消费者模...
    99+
    2022-12-07
    C++数据库连接池 C++mysql连接池
  • PHP学习笔记:数据库连接与操作
    概述:在Web开发中,数据库连接和操作是非常重要的环节。PHP作为一种广泛应用于Web开发的脚本语言,提供了丰富的数据库连接和操作功能。本文将介绍PHP中如何连接数据库以及常用的数据库操作方法,同时会提供具体的代码示例,以便读者更好地理解和...
    99+
    2023-10-21
    PHP 数据库操作 数据库连接
  • PHP连接数据库的操作
                  路径如图所示  注意,一定要建好数据库,不然的话会显示数据库不存在     数据的导入: 方法一:通过命令行备份与导入 方法二:如果是myisam引擎表可以直接拷贝粘贴到data中 方法三:通过可视化界面进...
    99+
    2023-09-10
    php
  • PHP PDO 连接操作数据库
    PHP PDO 连接操作数据库 目录: PHP PDO 连接操作数据库PDO链接mysqlPDO断开链接PDO创建数据库PDO创建表PDO插入数据插入多条数据:预处理:PDO查询数据PDO事务...
    99+
    2023-09-05
    数据库 php mysql web
  • PHP连接并操作数据库
    PHP连接并操作数据库 一、环境准备 (如果有环境请直接跳过,阅读下面的操作) 在Linux中进行PHP和数据库的环境搭建(适用于CentOS-7.0版本或以上),以下操作全部是在root用户中操作,普通用户中记得命令前加入sud...
    99+
    2023-12-23
    数据库 php mysql 服务器 开发语言
  • Spring mvc使用mybatis如何实现连接并操作mysql数据库
    本篇文章给大家分享的是有关Spring mvc使用mybatis如何实现连接并操作mysql数据库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。一、web.xml配置我们都知道...
    99+
    2023-05-31
    springmvc mybatis mysql
  • golang连接mysql数据库操作使用示例
    目录安装连接数据库处理类型(Handle Types)建表Exec使用Exec增删该示例sql预声明(Prepared Statements)QueryQueryxQueryRow和...
    99+
    2024-04-02
  • Java中怎么连接并操作MySQL数据库
    Java中怎么连接并操作MySQL数据库,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Windows10安装MySql数据库把安装好的数据库安装好,建立好数据库、创建表后,...
    99+
    2023-06-17
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作