在好例子网,分享、交流、成长!
您当前所在位置:首页C# 开发实例C#语言基础 → C#连接MySql服务器

C#连接MySql服务器

C#语言基础

下载此实例
  • 开发语言:C#
  • 实例大小:0.63M
  • 下载次数:227
  • 浏览次数:1264
  • 发布时间:2019-08-28
  • 实例类别:C#语言基础
  • 发 布 人:一个爱国女青年
  • 文件格式:.rar
  • 所需积分:2
 相关标签: C# MySql

实例介绍

【实例简介】

C#连接MySql服务器,并进行增删改查的操作

【实例截图】

from clipboard

【核心代码】

public class MySqlDBConnector : IDisposable
    {
        private MySqlConnection _connection;
        private readonly object _locker = new object();

        private static string _host;
        private static string _login;
        private static string _password;
        private static string _databaseName;

        private static string GetConnectionString()
        {
            if (string.IsNullOrEmpty(_host)
                || string.IsNullOrEmpty(_login)
                || string.IsNullOrEmpty(_password))
                throw new CouldNotConnectToDBException("GetConnectionString(): Database connection parameters not initialized. Call firstly:  DBConnector.InitializeDatabaseParameters(...)");

            MySqlConnectionStringBuilder cnx = new MySqlConnectionStringBuilder
            {
                Server = _host,
                UserID = _login,
                Password = _password,
                //MinimumPoolSize = 10,
                //MaximumPoolSize = 200
            };

            if (string.IsNullOrEmpty(_databaseName) == false)
                cnx.Database = _databaseName;

            return cnx.ToString();
        }

        /// <summary>
        /// Initialize database connection parameters
        /// </summary>
        /// <param name="host"></param>
        /// <param name="login"></param>
        /// <param name="password"></param>
        /// <param name="databaseName">Databasename</param>
        public static void InitializeDatabaseParameters(string host, string login, string password, string databaseName)
        {
            _host = host;
            _login = login;
            _password = password;
            _databaseName = databaseName;
        }

        /// <summary>
        /// Setup of the Connections to the local and the remote database server with standard user credentials.
        /// </summary>
        public void Connect()
        {
            lock (_locker)
            {
                if (_connection != null)
                {
                    if (_connection.Ping())
                        return; // already connected
                    Disconnect();
                }

                _connection = Connect(GetConnectionString());
            }
        }

        /// <summary>
        /// Connect to the database server using provided Connection Data. This can look like this:  
        /// After Coonection has been opened, a Ping-check is performed to verify it. 
        /// </summary>
        /// <param name="connectionData">Connection Data are used to setup the connection</param>
        /// <param name="evtHandler">Handler which occurs when the state of connection cahnged</param>
        /// <returns>Function returns the mysql connection</returns> 
        /// <exception cref="CouldNotConnectToDBException">If the connection could not be setup to the database</exception>
        public static MySqlConnection Connect(string connectionData, StateChangeEventHandler evtHandler = null)
        {
            int SleepTmInMilliSec = 100;
            MySqlConnection mySqlConn;

            try
            {
                mySqlConn = new MySqlConnection(connectionData);
                if (evtHandler != null)
                    mySqlConn.StateChange = evtHandler;

                mySqlConn.Open();

                Thread.Sleep(SleepTmInMilliSec);

                var connected = mySqlConn.Ping();

                if (connected == false)
                    throw new CouldNotConnectToDBException("Connect(): Could not connect to the database");
            }
            catch (Exception ex)
            {
                throw new CouldNotConnectToDBException(ex.Message, ex);
            }

            return mySqlConn;
        }


        /// <summary>
        /// Disconnect from the database server 
        /// </summary>
        /// <exception cref="CouldNotDisconnectFromTheDBException">If it was not possible to discinnect from a database server.
        /// For more details see exception message.</exception>
        public void Disconnect()
        {
            lock (_locker)
            {
                try
                {
                    _connection.Close();
                    _connection.Dispose();
                    _connection = null;
                }
                catch (Exception ex)
                {
                    throw new CouldNotDisconnectFromTheDBException(ex.Message, ex);
                }
            }
        }

        /// <summary>
        /// Execute "select" statement and return result in DataTable
        /// </summary>
        /// <param name="sqlCommand"></param>
        /// <param name="transaction"></param>
        /// <returns></returns>
        /// <exception cref="NoActiveConnectionToDBException"></exception>
        /// <exception cref="SQLStatementException"></exception>
        public DataTable ExecuteSelect(string sqlCommand, DbTransaction transaction = null)
        {
            try
            {
                lock (_locker)
                {
                    //check if the connection is already established. If not, setup the connection
                    Connect();

                    MySqlTransaction mysqltransaction = transaction as MySqlTransaction;
                    if (transaction != null && mysqltransaction == null)
                        throw new Exception("ExecuteSelect(): Transaction object should have type 'MySqlTransaction'");

                    DataTable resultTable = new DataTable();
                    using (var mysqlAdapter = new MySqlDataAdapter())
                    {
                        using (var mysqlCommand = new MySqlCommand
                        {
                            CommandText = sqlCommand,
                            Connection = _connection,
                            Transaction = mysqltransaction
                        })
                        {
                            mysqlAdapter.SelectCommand = mysqlCommand;
                            mysqlAdapter.Fill(resultTable);
                        }
                    }

                    return resultTable;
                }
            }
            catch (Exception ex)
            {
                if (ex is NoActiveConnectionToDBException)
                {
                    throw;
                }
                // Original exception (ex) has to be set as inner exception:
                throw new SQLStatementException("Exception while executing the SQL statement. Please see inner exception for more details.", ex);
            }
        }

标签: C# MySql

实例下载地址

C#连接MySql服务器

不能下载?内容有错? 点击这里报错 + 投诉 + 提问

好例子网口号:伸出你的我的手 — 分享

网友评论

发表评论

(您的评论需要经过审核才能显示)

查看所有0条评论>>

小贴士

感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。

  • 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
  • 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
  • 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
  • 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。

关于好例子网

本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明

;
报警