| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433 |
- using System;
- using System.Text;
- using System.Data;
- using System.Data.SqlClient;
- using System.Collections.Generic;
- namespace RoadFlow.Data.MSSQL
- {
- /// <summary>
- /// SQLSERVER助手类
- /// </summary>
- public class DBHelper
- {
- private string connectionString;
- public DBHelper()
- {
- this.connectionString = RoadFlow.Utility.Config.PlatformConnectionStringMSSQL;
- }
- public DBHelper(string connString)
- {
- this.connectionString = connString;
- }
- /// <summary>
- /// 连接字符串
- /// </summary>
- public string ConnectionString
- {
- get { return this.connectionString; }
- }
- /// <summary>
- /// 释放连接
- /// </summary>
- public void Dispose()
- {
- }
- /// <summary>
- /// 得到一个SqlDataReader
- /// </summary>
- /// <param name="sql">sql语句</param>
- /// <returns></returns>
- public SqlDataReader GetDataReader(string sql)
- {
- SqlConnection conn = new SqlConnection(ConnectionString);
- conn.Open();
- using (SqlCommand cmd = new SqlCommand(sql, conn))
- {
- cmd.Prepare();
- return cmd.ExecuteReader(CommandBehavior.CloseConnection);
- }
- }
- /// <summary>
- /// 得到一个SqlDataReader
- /// </summary>
- /// <param name="sql">sql语句</param>
- /// <returns></returns>
- public SqlDataReader GetDataReader(string sql, SqlParameter[] parameter)
- {
- SqlConnection conn = new SqlConnection(ConnectionString);
- conn.Open();
- using (SqlCommand cmd = new SqlCommand(sql, conn))
- {
- if (parameter != null && parameter.Length > 0)
- cmd.Parameters.AddRange(parameter);
- SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
- cmd.Parameters.Clear();
- cmd.Prepare();
- return dr;
- }
- }
- /// <summary>
- /// 得到一个DataTable
- /// </summary>
- /// <param name="sql">sql语句</param>
- /// <returns></returns>
- public DataTable GetDataTable(string sql)
- {
- using (SqlConnection conn = new SqlConnection(ConnectionString))
- {
- conn.Open();
- using (SqlCommand cmd = new SqlCommand(sql, conn))
- {
- SqlDataReader dr = cmd.ExecuteReader();
- DataTable dt = new DataTable();
- dt.Load(dr);
- dr.Close();
- dr.Dispose();
- cmd.Prepare();
- return dt;
- }
- }
- }
- /// <summary>
- /// 得到一个DataTable
- /// </summary>
- /// <param name="sql">sql语句</param>
- /// <returns></returns>
- public DataTable GetDataTable(string sql, SqlParameter[] parameter)
- {
- using (SqlConnection conn = new SqlConnection(ConnectionString))
- {
- conn.Open();
- using (SqlCommand cmd = new SqlCommand(sql, conn))
- {
- if (parameter != null && parameter.Length > 0)
- cmd.Parameters.AddRange(parameter);
- SqlDataReader dr = cmd.ExecuteReader();
- DataTable dt = new DataTable();
- dt.Load(dr);
- dr.Close();
- dr.Dispose();
- cmd.Parameters.Clear();
- cmd.Prepare();
- return dt;
- }
- }
- }
- /// <summary>
- /// 得到数据集
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public DataSet GetDataSet(string sql)
- {
- using (SqlConnection conn = new SqlConnection(ConnectionString))
- {
- conn.Open();
- using (SqlDataAdapter dap = new SqlDataAdapter(sql, conn))
- {
- DataSet ds = new DataSet();
- dap.Fill(ds);
- return ds;
- }
- }
- }
- /// <summary>
- /// 执行SQL
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public int Execute(string sql)
- {
- using (SqlConnection conn = new SqlConnection(ConnectionString))
- {
- conn.Open();
- using (SqlCommand cmd = new SqlCommand(sql, conn))
- {
- cmd.Prepare();
- return cmd.ExecuteNonQuery();
- }
- }
- }
- /// <summary>
- /// 执行SQL(事务)
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public int Execute(List<string> sqlList)
- {
- using (SqlConnection conn = new SqlConnection(ConnectionString))
- {
- conn.Open();
- using (SqlCommand cmd = new SqlCommand())
- {
- int i = 0;
- cmd.Connection = conn;
- foreach (string sql in sqlList)
- {
- cmd.CommandType = CommandType.Text;
- cmd.CommandText = sql;
- cmd.Prepare();
- i += cmd.ExecuteNonQuery();
- }
- return i;
- }
- }
- }
- /// <summary>
- /// 执行带参数的SQL
- /// </summary>
- /// <param name="sql"></param>
- /// <param name="param"></param>
- /// <returns></returns>
- public int Execute(string sql, SqlParameter[] parameter)
- {
- using (SqlConnection conn = new SqlConnection(ConnectionString))
- {
- conn.Open();
- using (SqlCommand cmd = new SqlCommand(sql, conn))
- {
- if (parameter != null && parameter.Length > 0)
- cmd.Parameters.AddRange(parameter);
- int i = cmd.ExecuteNonQuery();
- cmd.Parameters.Clear();
- cmd.Prepare();
- return i;
- }
- }
- }
- /// <summary>
- /// 执行SQL(事务)
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public int Execute(List<string> sqlList, List<SqlParameter[]> parameterList)
- {
- if (sqlList.Count > parameterList.Count)
- {
- throw new Exception("参数错误");
- }
- using (SqlConnection conn = new SqlConnection(ConnectionString))
- {
- conn.Open();
- using (SqlCommand cmd = new SqlCommand())
- {
- int i = 0;
- cmd.Connection = conn;
- for (int j = 0; j < sqlList.Count; j++)
- {
- cmd.CommandType = CommandType.Text;
- cmd.CommandText = sqlList[j];
- if (parameterList[j] != null && parameterList[j].Length > 0)
- {
- cmd.Parameters.AddRange(parameterList[j]);
- }
- i += cmd.ExecuteNonQuery();
- cmd.Parameters.Clear();
- cmd.Prepare();
- }
- return i;
- }
- }
- }
- /// <summary>
- /// 得到一个字段的值
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public string ExecuteScalar(string sql)
- {
- using (SqlConnection conn = new SqlConnection(ConnectionString))
- {
- conn.Open();
- using (SqlCommand cmd = new SqlCommand(sql, conn))
- {
- object obj = cmd.ExecuteScalar();
- cmd.Prepare();
- return obj != null ? obj.ToString() : string.Empty;
- }
- }
- }
- /// <summary>
- /// 得到一个字段的值
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public string ExecuteScalar(string sql, SqlParameter[] parameter)
- {
- using (SqlConnection conn = new SqlConnection(ConnectionString))
- {
- conn.Open();
- using (SqlCommand cmd = new SqlCommand(sql, conn))
- {
- if (parameter != null && parameter.Length > 0)
- cmd.Parameters.AddRange(parameter);
- object obj = cmd.ExecuteScalar();
- cmd.Parameters.Clear();
- cmd.Prepare();
- return obj != null ? obj.ToString() : string.Empty;
- }
- }
- }
- /// <summary>
- /// 得到一个字段的值
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public string GetFieldValue(string sql)
- {
- return ExecuteScalar(sql);
- }
- /// <summary>
- /// 得到一个字段的值
- /// </summary>
- /// <param name="sql"></param>
- /// <param name="parameter"></param>
- /// <returns></returns>
- public string GetFieldValue(string sql, SqlParameter[] parameter)
- {
- return ExecuteScalar(sql, parameter);
- }
- /// <summary>
- /// 获取一个sql的字段名称
- /// </summary>
- /// <param name="sql">sql语句</param>
- /// <returns></returns>
- public string GetFields(string sql, SqlParameter[] param)
- {
- using (SqlConnection conn = new SqlConnection(ConnectionString))
- {
- conn.Open();
- System.Text.StringBuilder names = new System.Text.StringBuilder(500);
- using (SqlCommand cmd = new SqlCommand(sql, conn))
- {
- if (param != null && param.Length > 0)
- cmd.Parameters.AddRange(param);
- SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SchemaOnly);
- for (int i = 0; i < dr.FieldCount; i++)
- {
- names.Append("[" + dr.GetName(i) + "]" + (i < dr.FieldCount - 1 ? "," : string.Empty));
- }
- cmd.Parameters.Clear();
- dr.Close();
- dr.Dispose();
- cmd.Prepare();
- return names.ToString();
- }
- }
- }
- /// <summary>
- /// 获取一个sql的字段名称
- /// </summary>
- /// <param name="sql"></param>
- /// <param name="param"></param>
- /// <param name="tableName">表名 </param>
- /// <returns></returns>
- public string GetFields(string sql, SqlParameter[] param, out string tableName)
- {
- using (SqlConnection conn = new SqlConnection(ConnectionString))
- {
- conn.Open();
- System.Text.StringBuilder names = new System.Text.StringBuilder(500);
- using (SqlCommand cmd = new SqlCommand(sql, conn))
- {
- if (param != null && param.Length > 0)
- cmd.Parameters.AddRange(param);
- SqlDataReader dr = cmd.ExecuteReader(CommandBehavior.SchemaOnly);
- tableName = dr.GetSchemaTable().TableName;
- for (int i = 0; i < dr.FieldCount; i++)
- {
- names.Append("[" + dr.GetName(i) + "]" + (i < dr.FieldCount - 1 ? "," : string.Empty));
- }
- cmd.Parameters.Clear();
- dr.Close();
- dr.Dispose();
- cmd.Prepare();
- return names.ToString();
- }
- }
- }
- /// <summary>
- /// 得到分页sql
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public string GetPaerSql(string sql, int size, int number, out long count, SqlParameter[] param = null)
- {
- string count1 = GetFieldValue(string.Format("select count(*) from ({0}) as PagerCountTemp", sql), param);
- long i;
- count = count1.IsLong(out i) ? i : 0;
- StringBuilder sql1 = new StringBuilder();
- sql1.Append("select * from (");
- sql1.Append(sql);
- sql1.AppendFormat(") as PagerTempTable");
- if (count > size)
- {
- sql1.AppendFormat(" where PagerAutoRowNumber between {0} and {1}", number * size - size + 1, number * size);
- }
- return sql1.ToString();
- }
- /// <summary>
- /// 得到分页sql
- /// </summary>
- /// <param name="sql"></param>
- /// <returns></returns>
- public string GetPaerSql(string table, string fileds, string where, string order, int size, int number, out long count, SqlParameter[] param = null)
- {
- string where1 = string.Empty;
- if (where.IsNullOrEmpty())
- {
- where1 = "";
- }
- else
- {
- where1 = where.Trim();
- if (where1.StartsWith("and", StringComparison.CurrentCultureIgnoreCase))
- {
- where1 = where1.Substring(3);
- }
- }
- string where2 = where1.IsNullOrEmpty() ? "" : "where " + where1;
- string sql = string.Format("select {0},ROW_NUMBER() OVER(ORDER BY {1}) as PagerAutoRowNumber from {2} {3}", fileds, order, table, where2);
- string count1 = GetFieldValue(string.Format("select count(*) from {0} {1}", table, where2), param);
- long i;
- count = count1.IsLong(out i) ? i : 0;
- StringBuilder sql1 = new StringBuilder();
- sql1.AppendFormat("select {0} from (", fileds.IsNullOrEmpty() ? "*" : fileds);
- sql1.Append(sql);
- sql1.AppendFormat(") as PagerTempTable");
- if (count > size)
- {
- sql1.AppendFormat(" where PagerAutoRowNumber between {0} and {1}", number * size - size + 1, number * size);
- }
- return sql1.ToString();
- }
- }
- }
|