using System;
using System.Collections.Generic;
using System.Text;
using System.Data.SqlClient;
using System.Collections;
using System.Data;
using System.Configuration;
namespace Common
{
public class DBHelper
{
//链接字符串
protected static string connectionString = ConfigurationManager.ConnectionStrings["ConnectionString"].ConnectionString;
public DBHelper()
{
//构造函数
}
/// <summary>
/// 连接数据库
/// </summary>
/// <param name="con">连接字符串</param>
/// <param name="cmd">SQL命令</param>
/// <param name="trans">事物</param>
/// <param name="type">命令类型</param>
/// <param name="cmdText">SQL语句</param>
/// <param name="paras">列的映射</param>
private static void PrepareCommand(SqlConnection con, SqlCommand cmd, SqlTransaction trans, CommandType type, string cmdText, params SqlParameter[] paras)
{
cmd.Connection = con;
cmd.CommandText = cmdText;
cmd.CommandType = type;
//trans = con.BeginTransaction();
if (con.State != ConnectionState.Open)
con.Open();
if (trans != null)
{
//trans = con.BeginTransaction();
cmd.Transaction = trans;
}
if (paras != null)
{
foreach (SqlParameter p in paras)
{
if (p != null)
cmd.Parameters.Add(p);
}
}
}
#region 执行简单SQL语句
/// <summary>
/// 执行SQL语句,返回影响的记录数
/// </summary>
/// <param name="SQLString">SQL语句</param>
/// <returns>影响的记录数</returns>
public static int ExecuteSql(string SQLString)
{
using (SqlConnection connection = new SqlConnection(connectionString))
{
using (SqlCommand cmd = new SqlCommand(SQLString, connection))
{
try
{
connection.Open();
int rows = cmd.ExecuteNonQuery();
return rows;
}
catch (System.Data.SqlClient.SqlException E)
{
connection.Close();
throw new Exception(E.Message);
}
}
}
}
/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">多条SQL语句</param>
public static void ExecuteSqlTran(ArrayList SQLStringList)
{
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
SqlTransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
try
{
for (int n = 0; n < SQLStringList.Count; n++)
{
string strsql = SQLStringList[n].ToString();
if (strsql.Trim().Length > 1)
{
cmd.CommandText = strsql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
}
catch (System.Data.SqlClient.SqlException E)
{
tx.Rollback();
throw new Exception(E.Message);
}
}
}
/// <summary>
/// 执行多条SQL语句,实现数据库事务。
/// </summary>
/// <param name="SQLStringList">多条SQL语句</param>
public static bool ExecuteSqlTranReturn(ArrayList SQLStringList)
{
bool bo = false;
using (SqlConnection conn = new SqlConnection(connectionString))
{
conn.Open();
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
SqlTransaction tx = conn.BeginTransaction();
cmd.Transaction = tx;
try
{
for (int n = 0; n < SQLStringList.Count; n++)
{
string strsql = SQLStringList[n].ToString();
if (strsql.Trim().Length > 1)
{
cmd.CommandText = strsql;
cmd.ExecuteNonQuery();
}
}
tx.Commit();
bo = true;
}
catch (System.Data.SqlClient.SqlException E)
{
tx.Rollback();