XiangTanReportTiming/CreateAccountBookConsole/SqlHelper.cs

161 lines
5.7 KiB
C#

using MySqlConnector;
using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace CreateAccountBookConsole
{
public class SqlHelper
{
public static DataSet ExecuteQuery(string sql, params MySqlParameter[] param)
{
DataSet ds = new DataSet();
using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["dbConnect"].ConnectionString))
{
try
{
conn.Open();
using (MySqlCommand cmd = new MySqlCommand(sql, conn))
{
if (param != null)
cmd.Parameters.AddRange(param);
MySqlDataAdapter da = new MySqlDataAdapter(cmd);
da.Fill(ds);
if (param != null)
cmd.Parameters.Clear();
return ds;
}
}
catch (Exception ex)
{
throw ex;
}
}
}
public static int ExecuteScalar(string sql, params MySqlParameter[] param)
{
using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["dbConnect"].ConnectionString))
{
try
{
conn.Open();
MySqlCommand cmd = new MySqlCommand(sql, conn);
if (param != null)
cmd.Parameters.AddRange(param);
int affectCount = int.Parse(cmd.ExecuteScalar().ToString());
if (param != null)
cmd.Parameters.Clear();//添加这一句即可解决此问题
return affectCount;
}
catch (Exception ex)
{
throw ex;
}
}
}
/// <summary>
/// 执行增、删、改的方法
/// </summary>
/// <param name="sql">预计执行的非SELECT查询语句</param>
/// <param name="param">SQL语句中的可变参数</param>
/// <returns>返回受影响的行数</returns>
public static int ExecuteNonQuery(string sql, params MySqlParameter[] param)
{
using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["dbConnect"].ConnectionString))
{
try
{
conn.Open();
MySqlCommand cmd = new MySqlCommand(sql, conn);
if (param != null)
cmd.Parameters.AddRange(param);
int affectCount = cmd.ExecuteNonQuery();
if (param != null)
cmd.Parameters.Clear();//添加这一句即可解决此问题
return affectCount;
}
catch (Exception ex)
{
throw ex;
}
}
}
public static long ExecuteNonQueryAndGetLastInsertedId(string sql, params MySqlParameter[] param)
{
using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["dbConnect"].ConnectionString))
{
try
{
conn.Open();
MySqlCommand cmd = new MySqlCommand(sql, conn);
if (param != null)
cmd.Parameters.AddRange(param);
int affectCount = cmd.ExecuteNonQuery();
if (param != null)
cmd.Parameters.Clear();
return cmd.LastInsertedId;
}
catch (Exception ex)
{
throw ex;
}
}
}
public static bool ExecuteNonQueryList(List<string> sqlList, List<MySqlParameter[]> paramList)
{
using (MySqlConnection conn = new MySqlConnection(ConfigurationManager.ConnectionStrings["dbConnect"].ConnectionString))
{
try
{
conn.Open();
MySqlTransaction transaction = conn.BeginTransaction();
MySqlCommand cmd = conn.CreateCommand();
cmd.Transaction = transaction;
try
{
for (int i = 0; i < sqlList.Count; i++)
{
cmd.CommandText = sqlList[i];
cmd.Parameters.AddRange(paramList[i]);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();//添加这一句即可解决此问题
}
transaction.Commit();
return true;
}
catch (Exception ex)
{
//logs.Log.WriteLine("错误原因:" + ex.Message);
try
{
//logs.Log.WriteLine("事物回滚");
transaction.Rollback();//出现错误就回滚...
}
catch (Exception ex1)
{
throw ex1;
}
throw ex;
}
}
catch (Exception ex)
{
throw ex;
}
}
}
}
}