SqlHelper
来源:互联网 发布:淘宝网禁止有毒化学物 编辑:程序博客网 时间:2024/05/23 15:39
using System;using System.Collections.Generic;using System.Configuration;using System.Data;using System.Data.SqlClient;using System.Linq;using System.Reflection;using System.Text;using System.Threading.Tasks;namespace Crawler.DataService{ public class SqlHelper { private static Logger logger = new Logger(typeof(SqlHelper)); private static string ConnStr = ConfigurationManager.ConnectionStrings["mvc5"].ConnectionString; /// <summary> /// 事务执行 /// </summary> /// <param name="sql"></param> public static void ExecuteNonQuery(string sql) { using (SqlConnection sqlConn = new SqlConnection(ConnStr)) { sqlConn.Open(); SqlCommand cmd = new SqlCommand(sql, sqlConn); cmd.ExecuteNonQuery();//.ExecuteNonQueryAsync();// } } public static void ExecuteNonQueryWithTrans(string sql) { SqlTransaction trans = null; try { using (SqlConnection sqlConn = new SqlConnection(ConnStr)) { sqlConn.Open(); trans = sqlConn.BeginTransaction(); SqlCommand cmd = new SqlCommand(sql, sqlConn, trans); cmd.ExecuteNonQuery();//.ExecuteNonQueryAsync();// trans.Commit(); } } catch (Exception ex) { //logger.Error(string.Format("ExecuteNonQueryWithTrans出现异常,sql={0}", sql), ex); if (trans != null && trans.Connection != null) trans.Rollback(); throw ex; } finally { } } public static List<T> QueryList<T>(string sql) where T : new() { using (SqlConnection sqlConn = new SqlConnection(ConnStr)) { sqlConn.Open(); SqlCommand cmd = new SqlCommand(sql, sqlConn); return TransList<T>(cmd.ExecuteReader()); } } public static void Insert<T>(T model, string tableName) where T : new() { string sql = GetInsertSql<T>(model, tableName); ExecuteNonQuery(sql); } public static void InsertList<T>(List<T> list, string tableName) where T : new() { string sql = string.Join(" ", list.Select(t => GetInsertSql<T>(t, tableName))); ExecuteNonQuery(sql); } #region Private private static string GetInsertSql<T>(T model, string tableName) { StringBuilder sbSql = new StringBuilder(); StringBuilder sbFields = new StringBuilder(); StringBuilder sbValues = new StringBuilder(); Type type = model.GetType(); var properties = type.GetProperties(); foreach (PropertyInfo p in properties) { string name = p.Name; if (!name.Equals("id", StringComparison.OrdinalIgnoreCase)) { sbFields.AppendFormat("[{0}],", name); string sValue = null; object oValue = p.GetValue(model); if (oValue != null) sValue = oValue.ToString().Replace("'", ""); sbValues.AppendFormat("'{0}',", sValue); } } sbSql.AppendFormat("INSERT INTO {0} ({1}) VALUES ({2});", tableName, sbFields.ToString().TrimEnd(','), sbValues.ToString().TrimEnd(',')); return sbSql.ToString(); } private static List<T> TransList<T>(SqlDataReader reader) where T : new() { List<T> tList = new List<T>(); Type type = typeof(T); var properties = type.GetProperties(); if (reader.Read()) { do { T t = new T(); foreach (PropertyInfo p in properties) { p.SetValue(t, Convert.ChangeType(reader[p.Name], p.PropertyType)); } tList.Add(t); } while (reader.Read()); } return tList; } private static T TransModel<T>(SqlDataReader reader) where T : new() { T t = new T(); if (reader.Read()) { do { Type type = typeof(T); var properties = type.GetProperties(); foreach (PropertyInfo p in properties) { p.SetValue(t, Convert.ChangeType(reader[p.Name], p.PropertyType)); } } while (reader.Read()); } return t; } #endregion Private }}
0 0
- SqlHelper
- SqlHelper
- SqlHelper
- SqlHelper:
- sqlHelper
- SQLHelper
- SqlHelper
- SQLHelper
- SqlHelper
- SqlHelper
- SQLHelper
- SqlHelper
- sqlhelper
- SQLHelper
- SQLHelper
- SQLHelper
- SqlHelper
- SqlHelper
- 【NOI2017模拟4.4】保持平衡【优先队列,贪心】
- v9 数据库数据表结构
- Android网络技术之HttpURLConnection
- 【iOS】生成Appicon图标、为iOS应用添加图标
- LeetCode 485. Max Consecutive Ones
- SqlHelper
- Openwrt:逆向永久修改Flash中的Mac地址
- 【敏捷开发每日一贴】:实时管理系统与自动化
- 区间dp nyoj737 合并石头(一)
- 夜神模拟器连接不上android studio解决方法
- javascript笔记
- 解决WampServer图标不变绿的方法
- 2016年第七届蓝桥杯C/C++程序设计本科B组省赛 凑算式(结果填空)
- deepin 录音器