using Npgsql; using System; using System.Collections.Generic; using System.Configuration; using System.Data; using System.Data.Common; using System.Linq; using System.Text.RegularExpressions; using System.Web; namespace JiangSu.cs { /// /// Postgre帮助类 /// public class PostgreHelper { private const string StrRegex = @"<[^>]+?style=[\w]+?:expression\(|\b(alert|confirm|prompt)\b|^\+/v(8|9)|<[^>]*?=[^>]*?&#[^>]*?>|\b(and|or)\b.{1,6}?(=|>|<|\bin\b|\blike\b)|/\*.+?\*/|<\s*script\b|<\s*img\b|\bEXEC\b|UNION.+?SELECT|UPDATE.+?SET|INSERT\s+INTO.+?VALUES|(SELECT|DELETE).+?FROM|(CREATE|ALTER|DROP|TRUNCATE)\s+(TABLE|DATABASE)"; private string conStr = null; public PostgreHelper() { this.conStr = ConfigurationManager.AppSettings["pgConn"]; } /// /// 连接字符串 /// public String ConStr { get { return this.conStr; } } /// /// 获取DataTable /// public DataTable GetDataTable(string sql, params DbParameter[] args) { using (NpgsqlConnection con = new NpgsqlConnection(ConStr)) { if (con.State != ConnectionState.Open) { con.Open(); } using (NpgsqlCommand cmd = new NpgsqlCommand(sql, con)) { if (args != null) { foreach (DbParameter arg in args) { //arg.ParameterName = arg.ParameterName.Replace("@", ":"); cmd.Parameters.Add(arg); } } using (NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(cmd)) { DataTable dt = new DataTable(); adapter.Fill(dt); return dt; } } } } /// /// 获取记录数 /// public int GetCount(string sql, params DbParameter[] args) { using (NpgsqlConnection con = new NpgsqlConnection(ConStr)) { if (con.State != ConnectionState.Open) { con.Open(); } using (NpgsqlCommand cmd = new NpgsqlCommand(sql, con)) { if (args != null) { foreach (DbParameter arg in args) { //arg.ParameterName = arg.ParameterName.Replace("@", ":"); cmd.Parameters.Add(arg); } } object obj = cmd.ExecuteScalar(); return obj == null ? 0 : Convert.ToInt32(obj); } } } public Object GetScalar(string sql, params DbParameter[] args) { using (NpgsqlConnection con = new NpgsqlConnection(ConStr)) { if (con.State != ConnectionState.Open) { con.Open(); } using (NpgsqlCommand cmd = new NpgsqlCommand(sql, con)) { if (args != null) { foreach (DbParameter arg in args) { cmd.Parameters.Add(arg); } } return cmd.ExecuteScalar(); } } } public int GetIntScalar(string sql, params DbParameter[] args) { using (NpgsqlConnection con = new NpgsqlConnection(ConStr)) { if (con.State != ConnectionState.Open) { con.Open(); } using (NpgsqlCommand cmd = new NpgsqlCommand(sql, con)) { if (args != null) { foreach (DbParameter arg in args) { cmd.Parameters.Add(arg); } } object obj = cmd.ExecuteScalar(); return null == obj ? 0 : Convert.ToInt32(obj); } } } /// /// 执行SQL,返回影响行数 /// public int ExecuteNonQuery(string sql, params DbParameter[] args) { using (NpgsqlConnection con = new NpgsqlConnection(ConStr)) { if (con.State != ConnectionState.Open) { con.Open(); } using (NpgsqlCommand cmd = new NpgsqlCommand(sql, con)) { if (args != null) { foreach (DbParameter arg in args) { //arg.ParameterName = arg.ParameterName.Replace("@", ":"); cmd.Parameters.Add(arg); } } return cmd.ExecuteNonQuery(); } } } /// /// 检查字符串 /// public static bool CheckStr(string input) { return Regex.IsMatch(input, StrRegex, RegexOptions.IgnoreCase); } } }