using Npgsql; using System; using System.Collections.Generic; using System.Data.Common; using System.Data.SQLite; using System.Linq; using System.Reflection; using System.Web; namespace JiangSu.cs { public class Tools { private static PostgreHelper _pgHelper; /// /// DB帮助类 /// public static PostgreHelper PGHelper { get { if (null == _pgHelper) { _pgHelper = new PostgreHelper(); } return _pgHelper; } } /// /// 获取参数列表 /// public static DbParameter[] GetPGParams(string sql, T t) { List list = new List(); Type tType = typeof(T); BindingFlags flags = BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance; int start = sql.IndexOf("@"); while (start != -1) { int end = sql.IndexOf(",", start); if (end == -1) end = sql.IndexOf(")", start); if (end == -1) end = sql.IndexOf(" ", start); if (end == -1) end = sql.Length; string name = sql.Substring(start + 1, end - start - 1); PropertyInfo pi = tType.GetProperty(name, flags); if (pi != null) { object value = pi.GetValue(t, null); NpgsqlParameter dp = new NpgsqlParameter("@" + name, value); list.Add(dp); } start = sql.IndexOf("@", end); } return list.ToArray(); } /// /// 获取参数列表 /// public static SQLiteParameter[] GetSQLiteParams(string sql, T t) { List list = new List(); Type tType = typeof(T); BindingFlags flags = BindingFlags.Public | BindingFlags.IgnoreCase | BindingFlags.Instance; int start = sql.IndexOf("@"); while (start != -1) { int end = sql.IndexOf(",", start); if (end == -1) end = sql.IndexOf(")", start); if (end == -1) end = sql.IndexOf(" ", start); if (end == -1) end = sql.Length; string name = sql.Substring(start + 1, end - start - 1); PropertyInfo pi = tType.GetProperty(name, flags); if (pi != null) { object value = pi.GetValue(t, null); SQLiteParameter dp = new SQLiteParameter("@" + name, value); list.Add(dp); } start = sql.IndexOf("@", end); } return list.ToArray(); } } }