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;
|
|
/// <summary>
|
/// DB帮助类
|
/// </summary>
|
public static PostgreHelper PGHelper
|
{
|
get
|
{
|
if (null == _pgHelper)
|
{
|
_pgHelper = new PostgreHelper();
|
}
|
|
return _pgHelper;
|
}
|
}
|
|
/// <summary>
|
/// 获取参数列表
|
/// </summary>
|
public static DbParameter[] GetPGParams<T>(string sql, T t)
|
{
|
List<DbParameter> list = new List<DbParameter>();
|
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();
|
}
|
|
/// <summary>
|
/// 获取参数列表
|
/// </summary>
|
public static SQLiteParameter[] GetSQLiteParams<T>(string sql, T t)
|
{
|
List<SQLiteParameter> list = new List<SQLiteParameter>();
|
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();
|
}
|
}
|
}
|