using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Reflection;
using System.Configuration;
namespace MESWebSite.CommonClass
{
public class SQLHelper
{
public static readonly string connStr = ConfigurationManager.ConnectionStrings["SqlConnString"].ConnectionString;
public static int timeout = 60;
public SQLHelper()
{
}
public static void ExecuteNonQuery(CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
ExecuteNonQuery(conn, null, cmdType, cmdText, cmdParms);
}
}
public static void ExecuteNonQuery(SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandText = cmdText;
cmd.CommandType = cmdType;
cmd.CommandTimeout = timeout;
if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
{
cmd.Parameters.Add(parm);
}
}
cmd.ExecuteNonQuery();
}
public static object ExecuteScalar(CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
conn.Open();
return ExecuteScalar(conn, null, cmdType, cmdText, cmdParms);
}
}
public static object ExecuteScalar(SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandText = cmdText;
cmd.CommandType = cmdType;
cmd.CommandTimeout = timeout;
if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
{
cmd.Parameters.Add(parm);
}
}
return cmd.ExecuteScalar();
}
public static DataSet QueryDataSet(CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
using (SqlConnection conn = new SqlConnection(connStr))
{
return QueryDataSet(conn, null, cmdType, cmdText, cmdParms);
}
}
public static DataSet QueryDataSet(SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms)
{
SqlCommand cmd = new SqlCommand();
cmd.Connection = conn;
if (trans != null)
cmd.Transaction = trans;
cmd.CommandText = cmdText;
cmd.CommandType = cmdType;
cmd.CommandTimeout = timeout;
if (cmdParms != null)
{
foreach (SqlParameter parm in cmdParms)
{
cmd.Parameters.Add(parm);
}
}
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
adapter.Fill(ds);
return ds;
}
///
/// 将class实例对象转换为SqlParameter列表
///
/// 类实例对象,实例的成员变量不可为null
/// SqlParameter列表
public static List ModelToParameterList(object model)
{
List list = new List();
//Type t = model.GetType();
PropertyInfo[] modelpro = model.GetType().GetProperties();
if (modelpro.Length > 0) //model是类,有属性
{
for (int i = 0; i < modelpro.Length; i++)
{
SqlParameter parm = new SqlParameter();
parm.Direction = ParameterDirection.Input;
parm.ParameterName = modelpro[i].Name;
object o = modelpro[i].GetValue(model, null);
Type t = modelpro[i].PropertyType;
if (modelpro[i].PropertyType.IsGenericType && modelpro[i].PropertyType.GetGenericTypeDefinition() == typeof(Nullable<>))
{
t = modelpro[i].PropertyType.GetGenericArguments()[0];
}
parm.SqlDbType = GetSqlDbType(t);
if (o == null)
parm.Value = DBNull.Value;
else
parm.Value = o;
list.Add(parm);
}
}
if (list.Count > 0) //传入参数不是类,返回null
return list;
return null;
}
///
/// 获得c#类型的对应sqlDbType类型
///
/// c#类型
/// SqlDBType
public static SqlDbType GetSqlDbType(Type t)
{
SqlDbType dbType = SqlDbType.Variant;
switch (t.Name)
{
case "Int16":
dbType = SqlDbType.SmallInt;
break;
case "Int32":
dbType = SqlDbType.Int;
break;
case "Int64":
dbType = SqlDbType.BigInt;
break;
case "Single":
dbType = SqlDbType.Real;
break;
case "Decimal":
dbType = SqlDbType.Decimal;
break;
case "Byte[]":
dbType = SqlDbType.VarBinary;
break;
case "Boolean":
dbType = SqlDbType.Bit;
break;
case "String":
dbType = SqlDbType.NVarChar;
break;
case "Char[]":
dbType = SqlDbType.Char;
break;
case "DateTime":
dbType = SqlDbType.DateTime;
break;
case "DateTime2":
dbType = SqlDbType.DateTime2;
break;
case "DateTimeOffset":
dbType = SqlDbType.DateTimeOffset;
break;
case "TimeSpan":
dbType = SqlDbType.Time;
break;
case "Guid":
dbType = SqlDbType.UniqueIdentifier;
break;
case "Xml":
dbType = SqlDbType.Xml;
break;
case "Object":
dbType = SqlDbType.Variant;
break;
}
return dbType;
}
}
}