using MySql.Data.MySqlClient;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CameraErrorCheck
{
///
/// 数据库查询帮助类
///
public class CameraMySqlHelp
{
///
/// 数据库连接字符串
///
public static string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["MySqlConnString"].ConnectionString;
///
/// 执行查询语句,返回DataTable
///
/// 查询语句
/// DataTable
public static DataTable QueryTable(string SQLString)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
var dt = new DataTable();
try
{
connection.Open();
MySqlDataAdapter command = new MySqlDataAdapter(SQLString, connection);
command.Fill(dt);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
finally
{
if (connection.State == ConnectionState.Open)
{
connection.Close();
MySqlConnection.ClearPool(connection);//加入此行可释放连接
connection.Dispose();
}
GC.Collect();
}
return dt;
}
}
///
/// 执行Sql并返回受影响行数
///
/// Sql语句
/// 参数
/// 受影响行数
public static int Execute(string SQLString)//Execute(string sql,)
{
return ExecuteSql(SQLString);
}
///
/// 执行SQL语句,返回影响的记录数
///
/// SQL语句
/// 影响的记录数
public static int ExecuteSql(string SQLString)
{
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
using (MySqlCommand cmd = new MySqlCommand(SQLString, connection))
{
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (Exception E)
{
connection.Close();
throw new Exception(E.Message);
}
finally
{
if (connection.State == ConnectionState.Open)
{
connection.Close();
MySqlConnection.ClearPool(connection);//加入此行可释放连接
connection.Dispose();
}
GC.Collect();
}
}
}
}
///
/// 执行多条SQL语句,实现数据库事务。
///
/// 多条SQL语句
public static bool ExecuteSqlTran(List SQLStringList)
{
var _result = false;
using (MySqlConnection connection = new MySqlConnection(connectionString))
{
connection.Open();
MySqlCommand cmd = new MySqlCommand();
cmd.Connection = connection;
MySqlTransaction tx = connection.BeginTransaction();
cmd.Transaction = tx;
try
{
foreach (var strSql in SQLStringList)
{
if (strSql.Trim().Length > 1)
{
cmd.CommandText = strSql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
_result = true;
}
catch (Exception E)
{
tx.Rollback();
}
finally
{
if (connection.State == ConnectionState.Open)
{
connection.Close();
MySqlConnection.ClearPool(connection);//加入此行可释放连接
connection.Dispose();
}
GC.Collect();
}
}
return _result;
}
}
}