2024-02-20 00:59:05 +00:00
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 ;
/// <summary>
/// 增删改
/// </summary>
/// <param name="sql">增删改</param>
/// <param name="cmdType">1代表是查询过程 2 是代表存储过程</param>
/// <param name="paras"></param>
/// <returns></returns>
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 ;
}
/// <summary>
/// 查询一个值
/// </summary>
/// <param name="sql"></param>
/// <param name="cmdType"></param>
/// <param name="paras"></param>
/// <returns></returns>
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 ;
}
/// <summary>
/// 查询多行值
/// </summary>
/// <param name="sql"></param>
/// <param name="cmdType"></param>
/// <param name="paras"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
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 ;
}
/// <summary>
/// 填充DataSet
/// </summary>
/// <param name="sql"></param>
/// <param name="cmdType"></param>
/// <param name="paras"></param>
/// <returns></returns>
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 ;
}
/// <summary>
/// 填充DataTable 一个结果集
/// </summary>
/// <param name="sql"></param>
/// <param name="cmdType"></param>
/// <param name="paras"></param>
/// <returns></returns>
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 ;
}
/// <summary>
/// 事务 一系列的sql语句 针对增删该查
/// </summary>
/// <param name="listSQL"></param>
/// <returns></returns>
public static bool ExecuteTrans ( List < string > 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 ( ) ;
}
}
}
/// <summary>
/// 执行事务 每个操作分装到cmdInfo中
/// </summary>
/// <param name="listCmd"></param>
/// <returns></returns>
/// <exception cref="Exception"></exception>
public static bool ExecuteTrans ( List < CmdInfo > 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 ( ) ;
}
}
}
/// <summary>
/// 构造SqlCommand
/// </summary>
/// <param name="conn"></param>
/// <param name="sql"></param>
/// <param name="cmdType"></param>
/// <param name="trans"></param>
/// <param name="paras"></param>
/// <returns></returns>
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 ;
}
/// <summary>
/// 对数据库插入数据
/// </summary>
/// <param name="tablename">表名</param>
/// <param name="stationId">站点ID</param>
/// <param name="RecordTime">数据记录时间</param>
/// <param name="key">需要插入的值的名称</param>
/// <param name="value">值</param>
public static void insertData ( string tablename , BeaconModel beacon )
{
2024-03-13 07:02:46 +00:00
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 ) ;
2024-02-20 00:59:05 +00:00
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);
//}
}
}