using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Data; using System.Linq; using System.Text; using CnasSynchronousCommon; namespace CnasSynchronusDAL { public static class 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;Allow User Variables=True"; } public static void InitConnectionString(string strConnectiong) { mConnStr = strConnectiong; } /// /// 对SQLite数据库执行增删改操作,返回受影响的行数。 /// /// 要执行的增删改的SQL语句 /// public static int ExecuteNonQuery(String sql) { MySqlConnection connection = new MySqlConnection(mConnStr); try { using (connection) { 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) { AppLog.Error(e2.Message); throw e2; } AppLog.Error(e1.Message); throw e1; } } } } catch (Exception e) { AppLog.Error(e.Message); throw e; } finally { if (connection != null) { //关闭数据库连接 connection.Close(); } } } /// /// 对数据库执行增删改操作,返回受影响的行数。 /// /// 要执行的增删改的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) { AppLog.Error(e2.Message); throw e2; } AppLog.Error(e1.Message); throw e1; } } } } catch (Exception e) { AppLog.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) { AppLog.Error(e2.Message); throw e2; } AppLog.Error(e1.Message); throw e1; } } } } catch (Exception e) { AppLog.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) { AppLog.Error(e2.Message); throw e2; } AppLog.Error(e1.Message); throw e1; } } } } catch (Exception e) { AppLog.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) { AppLog.Error(e2.Message); throw e2; } AppLog.Error(e1.Message); throw e1; } } } } catch (Exception e) { AppLog.Error(e.Message); throw e; } } /// /// 查询返回Dtaset /// /// /// public static DataSet ExecuteDataSet(String sql) { MySqlConnection connection = new MySqlConnection(mConnStr); try { //创建一个MySqlConnection对象 using (connection) { connection.Open(); MySqlTransaction transaction = connection.BeginTransaction(); //创建一个MySqlCommand对象 using (MySqlCommand cmd = new MySqlCommand()) { try { AppLog.Error("===-3113-==="+ sql + mConnStr); PrepareCommand(cmd, connection, transaction, CommandType.Text, sql, null); AppLog.Error("===-3223-==="+ sql + mConnStr); MySqlDataAdapter adapter = new MySqlDataAdapter(); adapter.SelectCommand = cmd; DataSet ds = new DataSet(); AppLog.Error("===-3223-==="+ sql + ds); adapter.Fill(ds); AppLog.Error("===-3333-==="+ sql + ds); transaction.Commit(); AppLog.Error("===-3443-==="+ sql + ds); //清除参数 cmd.Parameters.Clear(); return ds; AppLog.Error("===-3553-==="+ sql + ds); } catch (MySqlException e1) { try { transaction.Rollback(); } catch (Exception e2) { AppLog.Error(e2.Message); throw e2; } AppLog.Error(e1.Message); throw e1; } } } } catch (Exception e) { AppLog.Error(e.Message); throw e; }finally { if (connection != null) { //关闭数据库连接 connection.Close(); } } } /// /// 执行sql 返回一个DataTable /// /// /// /// public static DataTable ExecuteDataTable(string sqlText, params MySqlParameter[] parameters) { DataTable dt = null; try { using (MySqlDataAdapter adapter = new MySqlDataAdapter(sqlText, mConnStr)) { dt = new DataTable(); adapter.SelectCommand.Parameters.AddRange(parameters); adapter.Fill(dt); return dt; } } catch (Exception ex) { AppLog.Error(ex.Message); } return null; } /// /// 查询返回Dtaset /// /// /// public static DataSet ExecuteDataSet(String sql, MySqlParameter[] cmdParams) { MySqlConnection connection = new MySqlConnection(mConnStr); try { //创建一个MySqlConnection对象 using (connection) { 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) { AppLog.Error(e2.Message); throw e2; } AppLog.Error(e1.Message); throw e1; } } } } catch (Exception e) { AppLog.Error(e.Message); throw e; }finally { if (connection != null) { //关闭数据库连接 connection.Close(); } } } /// /// 准备执行一个命令 /// /// 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) { AppLog.Error(ex.Message); bIfSuccess = false; } return bIfSuccess; } } }