using System;
using System.Data;
using System.Data.SqlClient;
namespace Common
{
public class SqlHelper
{
//连接字符串
public static readonly string ConStr = XMLhelper.GetNode("ConnectStr");
///
/// 执行sql,返回DataSet
///
/// sql语句
///
public static DataSet ExecSqlDs(string sql)
{
var con = new SqlConnection(ConStr);
var adp = new SqlDataAdapter(sql, con);
var ds = new DataSet();
adp.Fill(ds, "sql");
return ds;
}
///
/// 执行SQL
///
/// sql语句
/// 参数
/// 成功返回空字符串,失败返回错误信息
public static string ExecSql(string sql, params SqlParameter[] sqlParameters)
{
string result = string.Empty;
var con = new SqlConnection(ConStr);
var command = new SqlCommand(sql, con) { CommandType = CommandType.Text };
if (sqlParameters.Length > 0)
{
CmdGetParam(command, sqlParameters);
}
try
{
con.Open();
command.ExecuteNonQuery();
}
catch (Exception ex)
{
result = ex.Message;
}
finally
{
con.Close();
}
return result;
}
///
/// 执行SQL
///
/// sql语句
/// 参数
/// 成功返回空字符串,失败返回错误信息
public static DataTable ExecSqlDateTable(string sql, params SqlParameter[] sqlParameters)
{
var con = new SqlConnection(ConStr);
var command = new SqlCommand(sql, con) { CommandType = CommandType.Text };
var dataSet = new DataSet();
if (sqlParameters.Length > 0)
{
CmdGetParam(command, sqlParameters);
}
try
{
var adapter = new SqlDataAdapter(command);
adapter.Fill(dataSet);
}
catch (Exception)
{
return new DataTable();
}
return dataSet.Tables.Count > 0 ? dataSet.Tables[0] : new DataTable();
}
///
/// 执行SQL 返回第一格的值
///
/// sql语句
/// 参数
/// 成功返回空字符串,失败返回错误信息
public static string ExecSqlSc(string sql, params SqlParameter[] sqlParameters)
{
var con = new SqlConnection(ConStr);
var command = new SqlCommand(sql, con) { CommandType = CommandType.Text };
string result = string.Empty;
if (sqlParameters.Length > 0)
{
CmdGetParam(command, sqlParameters);
}
try
{
con.Open();
var ex = command.ExecuteScalar();
if (ex != null && ex != DBNull.Value)
{
result = ex.ToString();
}
}
catch (Exception ex)
{
result = "*报错False*:" + ex.Message;
}
finally
{
con.Close();
}
return result;
}
//检查执行ExecSqlSc是否报错
public static bool CheckSc(string result)
{
return !result.Contains("*报错False*:");
}
///
/// sql命令传入参数
///
/// sql命令
/// 参数数组
public static void CmdGetParam(SqlCommand cmd, SqlParameter[] sqlParameters)
{
if (sqlParameters.Length <= 0) return;
cmd.Parameters.Clear();
foreach (var sqlParameter in sqlParameters)
{
cmd.Parameters.Add(sqlParameter);
}
}
///
/// 执行SQL事务
///
/// 对象二维数组, [,0]为sql语句,[,1]为sql参数数组
/// 成功返回空字符串,失败返回错误信息
public static string ExecSqlT(object[,] sqls)
{
string result = string.Empty;
var con = new SqlConnection(ConStr);
con.Open();
SqlTransaction tan = con.BeginTransaction(); //建立事务
try
{
var command = new SqlCommand { Connection = con, CommandType = CommandType.Text, Transaction = tan };
//计算有多少组语句需要执行
for (int i = 0; i < sqls.GetLength(0); i++)
{
command.CommandText = sqls[i, 0].ToString(); //取出语句
var sqlParameters = (SqlParameter[])sqls[i, 1]; //取出参数
if (sqlParameters.Length > 0)
{
CmdGetParam(command, sqlParameters); //参数赋值
}
command.ExecuteNonQuery(); //执行
}
tan.Commit(); //事务提交
}
catch (Exception ex)
{
tan.Rollback(); //事务回滚
result = ex.Message;
}
finally
{
con.Close();
}
return result;
}
#region reader读取数据
///
/// 从reader返回string
///
/// 查询的列名
///
///
public static string ReaderString(string columnName, SqlDataReader reader)
{
return (string)reader[columnName];
}
///
/// 从reader返回int
///
/// 查询的列名
///
///
public static int ReaderInt(string columnName, SqlDataReader reader)
{
return Convert.ToInt32(reader[columnName]);
}
///
/// 从reader返回DateTime
///
/// 查询的列名
///
///
public static DateTime ReaderDateTime(string columnName, SqlDataReader reader)
{
return (DateTime)reader[columnName];
}
///
/// 从reader返回bool
///
/// 查询的列名
///
///
public static bool ReaderBool(string columnName, SqlDataReader reader)
{
return (bool)reader[columnName];
}
#endregion
}
}