WPF上位机8——C#与MySQL

ADO.NET

数据库连接


数据插入、删除、更改


数据查询


带单个参数


带多个参数


csharp 复制代码
      using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Linq;
using System.Text;
using System.Threading.Tasks;


namespace WpfTest
{
    public class SqlHelper
    {
        private static string constr = ConfigurationManager.ConnectionStrings["db"].ConnectionString;
        /// <summary>
        /// 连接数据库
        /// </summary>
        /// <returns></returns>
        public MySqlConnection? ConnectDatabase()
        {
            MySqlConnection connection = new MySqlConnection(constr);
            connection.Open();
            if (connection != null && connection.State == System.Data.ConnectionState.Open)
            {
                Console.WriteLine("数据库连接成功");
            }
            else
            {
                Console.WriteLine("数据库连接失败");
            }
            return connection;
        }
        /// <summary>
        /// 关闭数据库
        /// </summary>
        /// <param name="mySqlConnection"></param>
        public void CloseConnection(MySqlConnection mySqlConnection)
        {
            if (mySqlConnection != null && mySqlConnection.State == System.Data.ConnectionState.Open)
            {
                mySqlConnection.Close();
                mySqlConnection = null!;
            }
        }/// <summary>
        /// 执行数据DML(insert,update,delete)操作
        /// </summary>
        /// <param name="sql"></param>

        public void ExecuteUpdate(string? sql)
        {
            var connection = ConnectDatabase();
            MySqlCommand cmd = connection!.CreateCommand();
            cmd.CommandText = sql;
            int row = cmd.ExecuteNonQuery();
            if (row > 0)
            {
                Console.WriteLine("操作成功");
            }
            else
            {
                Console.WriteLine("操作失败");
            }
            CloseConnection(connection);
        }
        /// <summary>
        /// 数据查询的调用模板
        /// </summary>
        public void test()
        {
            MySqlParameter[] parameters = new MySqlParameter[]
            {
                new MySqlParameter("@height",30),
                new MySqlParameter("@width",50),
            };
            string sql = "select * from tb_name where height=@height and width=@width";
            ExecuteQuery(sql, parameters);

        }
        /// <summary>
        /// 数据查询
        /// </summary>
        /// <param name="sql"></param>
        public void ExecuteQuery(string sql, MySqlParameter[] mySqlParameters)
        {
            var connection = ConnectDatabase();
            try
            {
                MySqlCommand mySqlCommand = new MySqlCommand(sql, connection);
                foreach (MySqlParameter param in mySqlParameters)
                {
                    mySqlCommand.Parameters.Add(param);
                }
                MySqlDataReader mySqlDataReader = mySqlCommand.ExecuteReader();
                while (mySqlDataReader.Read())
                {
                    mySqlDataReader.GetInt32(0);     // 通过列的索引拿到数据
                    mySqlDataReader.GetString("表字段名1");  //通过列的名称拿到数据
                    mySqlDataReader.GetString("表字段名2");
                }
                mySqlDataReader.Close();
            }
            catch (Exception)
            {

                throw;
            }
            finally
            {
                CloseConnection(connection!);
            }


        }

    }
}
 

基于特性+反射+DAO通用操作库

ORM对象关系映射

数据库中表映射为实体类


调用ORM框架中提供的新增方法:构建sql语句

创建枚举

根据枚举类型创建sql语句




调用

实体限定




生成参数列表

生成插入的所有方法


使用特性映射表名和字段名


通过特性获取真实的表名称



当字段名发生更改时会报错,所以给字段也添加特性




修改的方法








相关推荐
呆萌很11 小时前
MySQL 数据库和表的管理操作(命令行)
数据库·mysql
毕业设计70312 小时前
(免费领源码)基于Python的博物馆研学活动管理系统的设计与实现22724- java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
python·mysql·随机森林·pycharm·django·flask·推荐算法
程序员阿鹏17 小时前
如何实现MySQL分库分表?
数据结构·数据库·sql·mysql·缓存
风哥2号17 小时前
数据库教程FGMT33‑MySQL主从复制项目实施与维护06(MySQL8.4/9.7 MGR组复制)
数据库·mysql
杨云龙UP18 小时前
MySQL Host is blocked because of many connection errors 导致 JDBC 连接失败排查与解决
linux·运维·网络·数据库·sql·mysql·登录失败
程序员梅雨20 小时前
MySQL底层探索(一):什么是脏页?什么是冷热分离?
mysql·面试
bksczm1 天前
MySQL基础篇之表的增删查改(CRUD)细则
sql·mysql
莫陌尛.1 天前
Docker MySQL 删表卡死、执行超时(MDL锁阻塞)问题复盘与根治方案
mysql·docker·容器
毕业设计7031 天前
(免费领源码) 基于微信小程序的预制菜商城的设计与实现25172-java、PHP、python、C#、小程序、大数据、单片机、网络工程等)
vue.js·python·mysql·微信小程序·pycharm·微信开发者工具·推荐算法
泡泡鱼(敲代码中)2 天前
MySQL基础学习笔记:从数据模型到DDL全掌握
开发语言·数据库·笔记·学习·mysql