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();
}
}
}