| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 | using System;using System.Collections.Generic;using System.Linq;using System.Text;using Npgsql;using System.Data;namespace Aitex.Core.RT.DBCore{    public class PostgresqlHelper    {        /// <summary>        /// 连接字符串需要初始化        /// </summary>        public static string ConnectionString { get; set; }        /// <summary>        /// 获得连接对象        /// </summary>        /// <returns></returns>        public static NpgsqlConnection GetConnection()        {            if (string.IsNullOrWhiteSpace(ConnectionString))                throw new ArgumentNullException("PostgresqlConn");            return new NpgsqlConnection(ConnectionString);        }        static void PrepareCommand(NpgsqlCommand cmd, NpgsqlConnection conn, string cmdText, params object[] p)        {            if (conn.State != ConnectionState.Open)                conn.Open();            cmd.Parameters.Clear();            cmd.Connection = conn;            cmd.CommandText = cmdText;            cmd.CommandType = CommandType.Text;            if (p != null)            {                foreach (object parm in p)                    cmd.Parameters.AddWithValue(string.Empty, parm);            }        }        public static DataSet ExecuteDataset(string cmdText, params object[] p)        {            DataSet ds = new DataSet();            using (NpgsqlConnection connection = GetConnection())            using (NpgsqlCommand command = new NpgsqlCommand())            {                PrepareCommand(command, connection, cmdText, p);                NpgsqlDataAdapter da = new NpgsqlDataAdapter(command);                da.Fill(ds);            }            return ds;        }        public static DataRow ExecuteDataRow(string cmdText, params object[] p)        {            DataSet ds = ExecuteDataset(cmdText, p);            if (ds != null && ds.Tables.Count > 0 && ds.Tables[0].Rows.Count > 0)                return ds.Tables[0].Rows[0];            return null;        }        /// <summary>        /// 返回受影响的行数        /// </summary>        public static int ExecuteNonQuery(string cmdText, params object[] p)        {                        using (NpgsqlConnection connection = GetConnection())            using (NpgsqlCommand command = new NpgsqlCommand())            {                PrepareCommand(command, connection, cmdText, p);                return command.ExecuteNonQuery();            }        }        /// <summary>        /// 返回NpgsqlDataReader对象        /// </summary>        public static NpgsqlDataReader ExecuteReader(string cmdText, params object[] p)        {                        NpgsqlConnection connection = GetConnection();            NpgsqlCommand command = new NpgsqlCommand();            try            {                PrepareCommand(command, connection, cmdText, p);                return command.ExecuteReader(CommandBehavior.CloseConnection);            }            catch            {                connection.Close();                throw;            }        }        /// <summary>        /// 返回结果集中的第一行第一列,忽略其他行或列        /// </summary>        public static object ExecuteScalar(string cmdText, params object[] p)        {            using (NpgsqlConnection connection = GetConnection())            using (NpgsqlCommand command = new NpgsqlCommand())            {                PrepareCommand(command, connection, cmdText, p);                return command.ExecuteScalar();            }        }        /// <summary>        /// 分页        /// </summary>        public static DataSet ExecutePager(ref int recordCount, int pageIndex, int pageSize, string cmdText, string countText, params object[] p)        {            if (recordCount < 0)                recordCount = int.Parse(ExecuteScalar(countText, p).ToString());            DataSet ds = new DataSet();                        using(NpgsqlConnection connection = GetConnection())            using(NpgsqlCommand command = new NpgsqlCommand())            {                PrepareCommand(command, connection, cmdText, p);                NpgsqlDataAdapter da = new NpgsqlDataAdapter(command);                da.Fill(ds, (pageIndex - 1) * pageSize, pageSize, "result");            }            return ds;        }    }}
 |