TypechoJoeTheme

Yuuuuuu

C#

C#的一个Mysql助手类

一个在C#中使用Mysql的通用DBHelper,以后可能还会用到

不过首先需要下载Mysql.Data.dll这个官方库

找不到的话可以直接在这里下载

下载地址
备用下载地址
注意需要改一下命名空间(namespace)

代码:

using System;
using System.Collections.Generic;
using System.Data;
using System.Windows.Forms;
using MySql.Data.MySqlClient;

namespace DataBase
{
    class DBHelper
    {
        // 数据库配置
        // 编码设置utf8,防止中文乱码
        private static string _constr = "server=localhost;uid=root;pwd=password;database=database;Charset=utf8";
        

        // 数据库连接
        private MySqlConnection conn;

        // 返回数据库连接
        private MySqlConnection GetConnection()
        {
            conn = new MySqlConnection(_constr);
            return conn;
        }

        // 初始化连接并打开
        public bool Init()
        {
            try
            {
                conn = GetConnection();
                conn.Open();
                return true;
            }
            catch (Exception e)
            {
                //记录日志,退出
                MessageBox.Show(e.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return false;
            }
        }

        // 返回一个适配器
        public MySqlDataAdapter DataAdp(string strSQL)
        {
            MySqlDataAdapter dap = new MySqlDataAdapter(strSQL, conn);
            return dap;
        }

        // 执行查询语句
        // 返回DataSet
        public DataSet Query(string strSQL,string TableName = null)
        {
            DataSet ds = new DataSet();
            try
            {
                MySqlDataAdapter dap = new MySqlDataAdapter(strSQL, conn);
                if(TableName != null)
                    dap.Fill(ds,TableName);
                else
                    dap.Fill(ds);
                //MySqlCommandBuilder sqlCommandBuilder = new MySqlCommandBuilder(dap);
            }
            catch (Exception e)
            {
                //记录日志,并返回空
                MessageBox.Show(strSQL + "\n" + e.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return null;
            }
            return ds;
        }
        // 执行单条增删改语句
        // 返回受影响的行数
        public int Execute(string strSQL)
        {
            MySqlCommand cmd = new MySqlCommand(strSQL, conn);
            try
            {
                int rows = cmd.ExecuteNonQuery();
                return rows;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return 0;
            }
        }
        // 通过事务执行增删改语句
        // 返回受影响的行数
        // 发生回滚返回-1
        public int ExecuteTransaction(List<string> strSQLs)
        {
            MySqlCommand cmd = new MySqlCommand("", conn);
            int rows = 0;
            MySqlTransaction tran = conn.BeginTransaction();
            cmd.Transaction = tran;
            try
            {
                foreach (var n in strSQLs)
                {
                    cmd.CommandText = n;
                    rows += cmd.ExecuteNonQuery();
                }
                tran.Commit();
                return rows;
            }
            catch (Exception e)
            {
                MessageBox.Show(e.Message, "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);
                tran.Rollback();
                return -1;
            }
        }

        // 关闭连接
        public void close()
        {
            conn.Close();
        }
    }
}
赞(0)
评论 (0)