using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; namespace CNAS_DBSync { public static class MySQLHelper { private static log4net.ILog log = log4net.LogManager.GetLogger("MySQLHelper"); private static String mConnStr = null; public static void InitConnectionString(string strServerIP,string strServerPort,string strServerHost,string strServerUser,string strServerPwd) { mConnStr = "server=" + strServerIP + ";port=" + strServerPort + ";user=" + strServerUser + ";password=" + strServerPwd + ";database=" + strServerHost + ";CharSet=utf8"; } /// /// 对SQLite数据库执行增删改操作,返回受影响的行数。 /// /// 要执行的增删改的SQL语句 /// public static int ExecuteNonQuery(String sql) { try { using (MySqlConnection connection = new MySqlConnection(mConnStr)) { connection.Open(); MySqlTransaction transaction = connection.BeginTransaction(); using (MySqlCommand cmd = new MySqlCommand()) { try { PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null); int rows = cmd.ExecuteNonQuery(); transaction.Commit(); cmd.Parameters.Clear(); return rows; } catch (MySqlException e1) { try { transaction.Rollback(); } catch (Exception e2) { log.Error(e2.Message); throw e2; } log.Error(e1.Message); throw e1; } } } } catch (Exception e) { log.Error(e.Message); throw e; } } /// /// 对数据库执行增删改操作,返回受影响的行数。 /// /// 要执行的增删改的SQL语句 /// public static int ExecuteNonQuery(String sql, MySqlParameter[] cmdParams) { try { using (MySqlConnection connection = new MySqlConnection(mConnStr)) { connection.Open(); MySqlTransaction transaction = connection.BeginTransaction(); using (MySqlCommand cmd = new MySqlCommand()) { try { PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, cmdParams); int rows = cmd.ExecuteNonQuery(); transaction.Commit(); cmd.Parameters.Clear(); return rows; } catch (MySqlException e1) { try { transaction.Rollback(); } catch (Exception e2) { log.Error(e2.Message); throw e2; } log.Error(e1.Message); throw e1; } } } } catch (Exception e) { log.Error(e.Message); throw e; } } /// /// 对SQLite数据库执行操作,返回 返回第一行第一列数据 /// /// /// public static int ExecuteScalar(String sql) { try { using (MySqlConnection connection = new MySqlConnection(mConnStr)) { connection.Open(); MySqlTransaction transaction = connection.BeginTransaction(); using (MySqlCommand cmd = new MySqlCommand()) { try { int line = 0; PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null); String str = cmd.ExecuteScalar().ToString(); transaction.Commit(); line = Convert.ToInt32(str); cmd.Parameters.Clear(); return line; } catch (MySqlException e1) { try { transaction.Rollback(); } catch (Exception e2) { log.Error(e2.Message); throw e2; } log.Error(e1.Message); throw e1; } } } } catch (Exception e) { log.Error(e.Message); throw e; } } /// /// 对SQLite数据库执行操作,返回 返回第一行第一列数据 /// /// /// public static int ExecuteScalar(String sql, MySqlParameter[] cmdParams) { try { using (MySqlConnection connection = new MySqlConnection(mConnStr)) { connection.Open(); MySqlTransaction transaction = connection.BeginTransaction(); using (MySqlCommand cmd = new MySqlCommand()) { try { int line = 0; PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, cmdParams); String str = cmd.ExecuteScalar().ToString(); transaction.Commit(); line = Convert.ToInt32(str); cmd.Parameters.Clear(); return line; } catch (MySqlException e1) { try { transaction.Rollback(); } catch (Exception e2) { log.Error(e2.Message); throw e2; } log.Error(e1.Message); throw e1; } } } } catch (Exception e) { log.Error(e.Message); throw e; } } /// ///  用执行的数据库连接执行一个返回数据集的sql命令 /// /// /// public static MySqlDataReader ExecuteReader(String sql) { try { //创建一个MySqlConnection对象 using (MySqlConnection connection = new MySqlConnection(mConnStr)) { connection.Open(); MySqlTransaction transaction = connection.BeginTransaction(); //创建一个MySqlCommand对象 using (MySqlCommand cmd = new MySqlCommand()) { try { PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null); MySqlDataReader reader = cmd.ExecuteReader(CommandBehavior.CloseConnection); transaction.Commit(); cmd.Parameters.Clear(); return reader; } catch (MySqlException e1) { try { transaction.Rollback(); } catch (Exception e2) { log.Error(e2.Message); throw e2; } log.Error(e1.Message); throw e1; } } } } catch (Exception e) { log.Error(e.Message); throw e; } } /// /// 查询返回Dtaset /// /// /// public static DataSet ExecuteDataSet(String sql) { try { //创建一个MySqlConnection对象 using (MySqlConnection connection = new MySqlConnection(mConnStr)) { connection.Open(); MySqlTransaction transaction = connection.BeginTransaction(); //创建一个MySqlCommand对象 using (MySqlCommand cmd = new MySqlCommand()) { try { PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null); MySqlDataAdapter adapter = new MySqlDataAdapter(); adapter.SelectCommand = cmd; DataSet ds = new DataSet(); adapter.Fill(ds); transaction.Commit(); //清除参数 cmd.Parameters.Clear(); return ds; } catch (MySqlException e1) { try { transaction.Rollback(); } catch (Exception e2) { log.Error(e2.Message); throw e2; } log.Error(e1.Message); throw e1; } } } } catch (Exception e) { log.Error(e.Message); throw e; } } /// /// 查询返回Dtaset /// /// /// public static DataSet ExecuteDataSet(String sql, MySqlParameter[] cmdParams) { try { //创建一个MySqlConnection对象 using (MySqlConnection connection = new MySqlConnection(mConnStr)) { connection.Open(); MySqlTransaction transaction = connection.BeginTransaction(); //创建一个MySqlCommand对象 using (MySqlCommand cmd = new MySqlCommand()) { try { PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, cmdParams); MySqlDataAdapter adapter = new MySqlDataAdapter(); adapter.SelectCommand = cmd; DataSet ds = new DataSet(); adapter.Fill(ds); transaction.Commit(); //清除参数 cmd.Parameters.Clear(); return ds; } catch (MySqlException e1) { try { transaction.Rollback(); } catch (Exception e2) { log.Error(e2.Message); throw e2; } log.Error(e1.Message); throw e1; } } } } catch (Exception e) { log.Error(e.Message); throw e; } } /// /// 准备执行一个命令 /// /// sql命令 /// OleDb连接 /// OleDb事务 /// 命令类型例如 存储过程或者文本 /// 命令文本,例如:Select * from Products /// 执行命令的参数 private static void PrepareCommand(MySqlCommand cmd, MySqlConnection conn, MySqlTransaction trans, CommandType cmdType, string cmdText, MySqlParameter[] cmdParms) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (trans != null) cmd.Transaction = trans; cmd.CommandType = cmdType; if (cmdParms != null) { foreach (MySqlParameter parm in cmdParms) cmd.Parameters.Add(parm); } } public static bool TestConnectMySql() { bool bIfSuccess = false; try { //创建一个MySqlConnection对象 using (MySqlConnection connection = new MySqlConnection(mConnStr)) { connection.Open(); if (connection.State == System.Data.ConnectionState.Open) bIfSuccess = true; } } catch (Exception ex) { log.Error(ex.Message); bIfSuccess = false; } return bIfSuccess; } } }