301 lines
14 KiB
C#
301 lines
14 KiB
C#
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)
|
|
{
|
|
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);
|
|
//}
|
|
}
|
|
}
|