C#连数据库,创建一个数据库类DatabaseHelper.cs

创建一个数据库类DatabaseHelper.cs,有关数据库的操作都放在这里面,增加代码复用性,减少耦合。

DatabaseHelper.cs的代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using MySql.Data.MySqlClient;
using System.Data;
using Compunet.YoloV8.Data;

namespace WinFormsApp1
{
    public class DatabaseHelper
    {
        private readonly string connectionString;
        //用来连接数据库
        public DatabaseHelper(string server, string database, string user, string password)
        {
            connectionString = $"Server={server};Database={database};User ID={user};Password={password};";
        }

        private MySqlConnection GetConnection()
        {
            return new MySqlConnection(connectionString);
        }
        //查询所有,返回一个DataTable类型的数据,因为我前面是winform界面,DataTable类型的数据可以直接显示在DataGridView控件中
        public DataTable GetDataSet()
        {
            string query = "SELECT * FROM record";

            return ExecuteQuery(query);
        }
        //根据传入的开始时间和结束时间查询记录
        public DataTable SelectByTime(string start,string end)
        {
            string query = "SELECT * FROM record WHERE predictDate BETWEEN @StartTime AND @EndTime;";
            var parameters = new MySqlParameter[]
            {
                new MySqlParameter("@StartTime", start),
                new MySqlParameter("@EndTime",end),
            };
            DataTable dt = new DataTable();
             dt=ExecuteQuery(query, parameters);
            return dt;
        }
        //插入数据
        public void InsertData(Record record)
        {
            string query = "INSERT INTO record (url, boxes,speed,predictResult,predictDate) VALUES (@url, @boxes,@speed,@predictResult,@predictDate)";
            var parameters = new MySqlParameter[]
            {
                new MySqlParameter("@url", record.url),
                new MySqlParameter("@boxes", record.boxes),
                 new MySqlParameter("@speed", record.speed),
                  new MySqlParameter("@predictResult", record.predictResult),
                   new MySqlParameter("@predictDate", record.predictDate),
            };
            ExecuteNonQuery(query, parameters);
        }
        public bool Connect(out MySqlConnection connection)
        {
            connection = new MySqlConnection(connectionString);
            try
            {
                connection.Open();
                return true;
            }
            catch (Exception ex)
            {
                Console.WriteLine($"连接数据库失败: {ex.Message}");
                connection = null;
                return false;
            }
        }
         
        //返回int型
        public int ExecuteNonQuery(string query, MySqlParameter[] parameters = null)
        {
            using (var connection = GetConnection())
            {
                connection.Open();
                using (var command = new MySqlCommand(query, connection))
                {
                    if (parameters != null)
                    {
                        command.Parameters.AddRange(parameters);
                    }
                    return command.ExecuteNonQuery();
                }
            }
        }
        //返回data数据
        public DataTable ExecuteQuery(string query, MySqlParameter[] parameters = null)
        {
            using (var connection = GetConnection())
            {
                using (var command = new MySqlCommand(query, connection))
                {
                    if (parameters != null)
                    {
                        command.Parameters.AddRange(parameters);
                    }

                    using (var adapter = new MySqlDataAdapter(command))
                    {
                        var dataTable = new DataTable();
                        adapter.Fill(dataTable);
                        return dataTable;
                    }
                }
            }
        }
    }
}

演示一下怎么调用:

1.连数据库的信息我是单独存放在了一个ConnectInfo.cs类中

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace WinFormsApp1
{
    public class ConnectInfo
    {
       public static string server { get; set; } = "localhost";  // 本地MySQL服务器
       public static string database { get; set; } = "yolo";     // 数据库名称
       public static string username { get; set; } = "root";     // 用户名
       public static string password { get; set; } = "123456";   // 密码
    }
}

2.声明数据库类DatabaseHelper,调用方法

3.然后就可以调用方法:

我的数据库类中只写了查询和插入的方法,其他的方法大同小异

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值