using _20230724_MBJC_upperpc.Models; using MySql.Data.MySqlClient; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; namespace _20230724_MBJC_upperpc.DataAccess { public class DBHelper { //连接钥匙 private static readonly string ConnStr = ConfigurationManager.ConnectionStrings["db_Sever"].ConnectionString; //private static readonly string ConnStr_Server = ConfigurationManager.ConnectionStrings["db_Sever"].ConnectionString; MySqlConnection conn = null; /// /// 增删改 /// /// 增删改 /// 1代表是查询过程 2 是代表存储过程 /// /// public static int ExecuteNonQuery(string sql, int cmdType, params MySqlParameter[] paras) { int count = 0; using (MySqlConnection conn = new MySqlConnection(ConnStr)) { MySqlCommand cmd = BuildCommand(conn, sql, cmdType, null, paras); count = cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); //清空数组集合 conn.Close(); } ////向服务器发送数据 //if (tools.TcpClientCheck(ConnStr_Server.Split(';')[0].Split('=')[1], 3306)) //{ // using (MySqlConnection conn = new MySqlConnection(ConnStr_Server)) // { // MySqlCommand cmd = BuildCommand(conn, sql, cmdType, null, paras); // count = cmd.ExecuteNonQuery(); // cmd.Parameters.Clear(); //清空数组集合 // conn.Close(); // } //} return count; } /// /// 查询一个值 /// /// /// /// /// public static object ExecuteScalar(string sql, int cmdType, params MySqlParameter[] paras) { object o = 0; using (MySqlConnection conn = new MySqlConnection(ConnStr)) { MySqlCommand cmd = BuildCommand(conn, sql, cmdType, null, paras); o = cmd.ExecuteScalar(); cmd.Parameters.Clear(); conn.Close(); } return o; } /// /// 查询多行值 /// /// /// /// /// /// public static MySqlDataReader ExecuteReader(string sql, int cmdType, params MySqlParameter[] paras) { MySqlDataReader dr = null; MySqlConnection conn = new MySqlConnection(ConnStr); MySqlCommand cmd = BuildCommand(conn, sql, cmdType, null, paras); try { dr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); } catch (MySqlException ex) { conn.Close(); throw new Exception("执行查询异常", ex); } return dr; } /// /// 填充DataSet /// /// /// /// /// public static DataSet GetDataSet(string sql, int cmdType, MySqlParameter[] paras) { DataSet ds = new DataSet(); using (MySqlConnection conn = new MySqlConnection(ConnStr)) { MySqlCommand cmd = BuildCommand(conn, sql, cmdType, null, paras); MySqlDataAdapter da = new MySqlDataAdapter(cmd); //conn.Open(); da.Fill(ds); conn.Close(); } return ds; } /// /// 填充DataTable 一个结果集 /// /// /// /// /// public static DataTable GetDataTable(string sql, int cmdType, MySqlParameter[] paras) { DataTable dt = new DataTable(); using (MySqlConnection conn = new MySqlConnection(ConnStr)) { MySqlCommand cmd = BuildCommand(conn, sql, cmdType, null, paras); MySqlDataAdapter da = new MySqlDataAdapter(cmd); //conn.Open(); da.Fill(dt); conn.Close(); } return dt; } /// /// 事务 一系列的sql语句 针对增删该查 /// /// /// public static bool ExecuteTrans(List listSQL) { using (MySqlConnection conn = new MySqlConnection(ConnStr)) { conn.Open(); MySqlTransaction trans = conn.BeginTransaction(); //MySqlCommand cmd = conn.CreateCommand(); //cmd.Transaction = trans; MySqlCommand cmd = BuildCommand(conn, "", 1, trans); try { for (int i = 0; i < listSQL.Count; i++) { cmd.CommandText = listSQL[i]; cmd.ExecuteNonQuery(); } trans.Commit(); return true; } catch (MySqlException ex) { trans.Rollback();//回滚 throw new Exception("执行事务出现异常", ex); } finally { trans.Dispose(); cmd.Dispose(); conn.Close(); } } } /// /// 执行事务 每个操作分装到cmdInfo中 /// /// /// /// public static bool ExecuteTrans(List listCmd) { using (MySqlConnection conn = new MySqlConnection(ConnStr)) { conn.Open(); MySqlTransaction trans = conn.BeginTransaction(); //MySqlCommand cmd = conn.CreateCommand(); //cmd.Transaction = trans; MySqlCommand cmd = BuildCommand(conn, "", 1, trans); try { for (int i = 0; i < listCmd.Count; i++) { cmd.CommandText = listCmd[i].CommandText; if (listCmd.Count == 2) cmd.CommandType = CommandType.StoredProcedure; cmd.Parameters.Clear(); //很重要 if (cmd.Parameters != null && cmd.Parameters.Count > 0) cmd.Parameters.AddRange(listCmd[i].Parameters); cmd.ExecuteNonQuery(); cmd.Parameters.Clear(); //很重要 } trans.Commit(); return true; } catch (MySqlException ex) { trans.Rollback();//回滚 throw new Exception("执行事务出现异常", ex); } finally { trans.Dispose(); cmd.Dispose(); conn.Close(); } } } /// /// 构造SqlCommand /// /// /// /// /// /// /// private static MySqlCommand BuildCommand(MySqlConnection conn, string sql, int cmdType, MySqlTransaction trans, params MySqlParameter[] paras) { MySqlCommand cmd = new MySqlCommand(sql, conn); if (cmdType == 2) cmd.CommandType = CommandType.StoredProcedure; //代表是存储过程 if (paras != null && paras.Length > 0) cmd.Parameters.AddRange(paras); if (conn.State == ConnectionState.Closed) conn.Open(); if (trans != null) cmd.Transaction = trans; return cmd; } /// /// 对数据库插入数据 /// /// 表名 /// 站点ID /// 数据记录时间 /// 需要插入的值的名称 /// 值 public static void insertData(string tablename, BeaconModel beacon) { string sql = string.Format("insert into {0}(StationID,RecordTime,Datetime,Ralative_Heading_Angle,Ralative_Pitch_Angle,Position_Distance,Propagationtime,BasicSite_JD,BasicSite_WD,BasicSite_Depth,BasicSite_Heading_Angle,BasicSite_Pitch_Angle,BasicSite_Roll_Angle,BasicSite_Heading_Speed,BasicSite_Pitch_Speed,BasicSite_Roll_Speed,BasicSite_Forword_A,BasicSite_Right_A,BasicSite_Sky_A,Beacon_JD,Beacon_WD,Beacon_Depth,Beacon_Roll_Angle,Beacon_Pitch_Angle,Beacon_Heading_Angle,Temp) VALUES({1},'{2}','{3}',{4},{5},{6},{7},{8},{9},{10},{11},{12},{13},{14},{15},{16},{17},{18},{19},{20},{21},{22},{23},{24},{25},{26});", tablename, beacon.ID, System.DateTime.Now, beacon.Datetime, beacon.Ralative_Heading_Angle, beacon.Ralative_Pitch_Angle, beacon.Position_Distance, beacon.Propagationtime, beacon.BasicSite_JD, beacon.BasicSite_WD, beacon.BasicSite_Depth, beacon.BasicSite_Heading_Angle, beacon.BasicSite_Pitch_Angle, beacon.BasicSite_Roll_Angle, beacon.BasicSite_Heading_Speed, beacon.BasicSite_Pitch_Speed, beacon.BasicSite_Roll_Speed, beacon.BasicSite_Forword_A, beacon.BasicSite_Right_A, beacon.BasicSite_Sky_A, beacon.Beacon_JD, beacon.Beacon_WD, beacon.Beacon_Depth, beacon.Beacon_Roll_Angle, beacon.Beacon_Pitch_Angle, beacon.Beacon_Heading_Angle, beacon.Temp); ExecuteNonQuery(sql, 1); } public static void insertAlarmInfo(string tablename, AlarmInfo alarmInfo) { string sql = string.Format("insert into {0}(StationID,RecordTime,ParaName,ParaState) VALUES({1},'{2}','{3}','{4}');", tablename, alarmInfo.StationID, System.DateTime.Now, alarmInfo.ParaName, alarmInfo.ParaState); ExecuteNonQuery(sql, 1); } //public static void InsertAlarmInfo(AlarmInfo alarmInfo) //{ // //首先判断数据库中是否有这一条数据 // string sql = string.Format("select id from alarminfo where ParaName = '{0}';", alarmInfo.ParaName); // if (ExecuteScalar(sql, 1) == null) //如果没有那就新增一条信息 // { // sql = string.Format("insert into alarminfo(StationID,RecordTime,DataTime,ParaName,ParaState,IsHandled) VALUES({0},'{1}','{2}','{3}','{4}',{5})", alarmInfo.StationID, alarmInfo.RecordTime, alarmInfo.DataTime, alarmInfo.ParaName, alarmInfo.ParaState, 0); // } // else //如果有那就更新这条信息 // { // sql = string.Format("update alarminfo set ParaState='{0}',IsHandled={1},RecordTime='{2}',DataTime='{3}' where ParaName = '{4}'", alarmInfo.ParaState, alarmInfo.IsHandled, alarmInfo.RecordTime, alarmInfo.DataTime, alarmInfo.ParaName); // } // ExecuteNonQuery(sql, 1); // sql = string.Format("insert into alarminfohis(StationID,RecordTime,DataTime,ParaName,ParaState,IsHandled) VALUES({0},'{1}','{2}','{3}','{4}',{5})", alarmInfo.StationID, alarmInfo.RecordTime, alarmInfo.DataTime, alarmInfo.ParaName, alarmInfo.ParaState, 0); // ExecuteNonQuery(sql, 1); //} //public static void InsertSwitchInfo(SwitchInfo switchInfo) //{ // //首先判断数据库中是否有这一条数据 // string sql = string.Format("select id from switchinfo where SwitchName = '{0}';", switchInfo.SwitchName); // if (ExecuteScalar(sql, 1) == null) //如果没有那就新增一条信息 // { // sql = string.Format("insert into switchinfo(StationID,RecordTime,DataTime,SwitchName,SwitchState) VALUES({0},'{1}','{2}','{3}','{4}')", switchInfo.StationID, switchInfo.RecordTime, switchInfo.DataTime, switchInfo.SwitchName, switchInfo.SwitchState); // } // else //如果有那就更新这条信息 // { // sql = string.Format("update switchinfo set SwitchState='{0}',RecordTime='{1}',DataTime='{2}' where SwitchName = '{3}'", switchInfo.SwitchState, switchInfo.RecordTime, switchInfo.DataTime, switchInfo.SwitchName); // } // ExecuteNonQuery(sql, 1); // sql = string.Format("insert into switchinfohis(StationID,RecordTime,DataTime,SwitchName,SwitchState) VALUES({0},'{1}','{2}','{3}','{4}')", switchInfo.StationID, switchInfo.RecordTime, switchInfo.DataTime, switchInfo.SwitchName, switchInfo.SwitchState); // ExecuteNonQuery(sql, 1); //} } }