317 lines
13 KiB
C#
317 lines
13 KiB
C#
|
|
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 FujianEarthquake.DataAccess
|
|||
|
|
{
|
|||
|
|
public class DBHelper
|
|||
|
|
{
|
|||
|
|
//连接钥匙
|
|||
|
|
private static readonly string ConnStr = ConfigurationManager.ConnectionStrings["db"].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, int stationId, DateTime RecordTime, string key, object value)
|
|||
|
|
{
|
|||
|
|
//首先判断数据库中是否有这一条数据
|
|||
|
|
string sql = string.Format("select id from {0} where RecordTime = '{1}' && StationID = {2}", tablename, RecordTime, stationId);
|
|||
|
|
if (ExecuteScalar(sql, 1) == null)
|
|||
|
|
{
|
|||
|
|
string valuechange = typeof(string).Equals(value.GetType()) ? "'{5}'" : "{5}";
|
|||
|
|
sql = string.Format("insert into {0}(StationID,RecordTime,DataTime,{1}) VALUES({2},'{3}','{4}'," + valuechange + ");", tablename, key, stationId, RecordTime, System.DateTime.Now, value.ToString());
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
//如果数据不同才更新
|
|||
|
|
if (ExecuteScalar(string.Format("select {0} from {1} where id = {2}", key, tablename, Convert.ToInt32(ExecuteScalar(sql, 1))), 1) != value)
|
|||
|
|
{
|
|||
|
|
string valuechange = typeof(string).Equals(value.GetType()) ? "'{2}'" : "{2}";
|
|||
|
|
sql = string.Format("update {0} set {1}=" + valuechange + " where RecordTime='{3}' && StationID = {4};", tablename, key, value.ToString(), RecordTime, stationId);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
ExecuteNonQuery(sql, 1);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
//public static void InsertAlarmInfo(AlarmRecordModel 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 alarm_info(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(SwitchInfoModel switchInfo)
|
|||
|
|
//{
|
|||
|
|
// //首先判断数据库中是否有这一条数据
|
|||
|
|
// string sql = string.Format("select id from switch_info where SwitchName = '{0}';", switchInfo.SwitchName);
|
|||
|
|
// if (ExecuteScalar(sql, 1) == null) //如果没有那就新增一条信息
|
|||
|
|
// {
|
|||
|
|
// sql = string.Format("insert into switch_info(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 switch_info 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 switch_info_his(StationID,RecordTime,DataTime,SwitchName,SwitchState) VALUES({0},'{1}','{2}','{3}','{4}')", switchInfo.StationID, switchInfo.RecordTime, switchInfo.DataTime, switchInfo.SwitchName, switchInfo.SwitchState);
|
|||
|
|
// ExecuteNonQuery(sql, 1);
|
|||
|
|
//}
|
|||
|
|
}
|
|||
|
|
}
|