zoukankan      html  css  js  c++  java
  • 封装Npgsql

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;
    using Npgsql;
    using System.Configuration;
    using System.Data;
    
    namespace PostgreSQLTest.DAO
    {
        public class NpgsqlHelper
        {
            private static string connectionString = ConfigurationManager.ConnectionStrings["PgConnection"].ConnectionString;
    
            public NpgsqlHelper() { }
    
            public static int ExecuteSql(string sql)
            {
                using (NpgsqlConnection connection = new NpgsqlConnection(connectionString))
                {
                    using (NpgsqlCommand cmd = new NpgsqlCommand(sql, connection))
                    {
                        connection.Open();
                        int rows = cmd.ExecuteNonQuery();
                        return rows;
                    }
                }
            }
            
            public static int GetScalar(string sql)
            {
                using (NpgsqlConnection connection = new NpgsqlConnection(connectionString))
                {
                    NpgsqlCommand cmd = new NpgsqlCommand(sql, connection);
                    connection.Open();
                    object obj = cmd.ExecuteScalar();
                    if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                    {
                        return 0;
                    }
                    else
                    {
                        return Convert.ToInt32(obj);
                    }
                }
            }
    
            public static DataTable Query(string sql)
            {
                using (NpgsqlConnection connection = new NpgsqlConnection(connectionString))
                {
                    DataSet ds = new DataSet();
                    connection.Open();
                    NpgsqlDataAdapter command = new NpgsqlDataAdapter(sql, connection);
                    command.Fill(ds, "ds");
                    return ds.Tables[0];
                }
            }
    
    
            #region 带参数的sql
    
    
            public static int ExecuteSql(string sql, params NpgsqlParameter[] param)
            {
                using (NpgsqlConnection connection = new NpgsqlConnection(connectionString))
                {
                    NpgsqlCommand cmd = new NpgsqlCommand();
                    PrepareCommand(cmd, connection, null, sql, param);
                    int rows = cmd.ExecuteNonQuery();
                    cmd.Parameters.Clear();
                    return rows;
                }
            }
    
    
            public static int GetScalar(string sql, params NpgsqlParameter[] param)
            {
                using (NpgsqlConnection connection = new NpgsqlConnection(connectionString))
                {
                    NpgsqlCommand cmd = new NpgsqlCommand(sql, connection);
                    PrepareCommand(cmd, connection, null, sql, param);
                    object obj = cmd.ExecuteScalar();
                    cmd.Parameters.Clear();
                    if ((Object.Equals(obj, null)) || (Object.Equals(obj, System.DBNull.Value)))
                    {
                        return 0;
                    }
                    else
                    {
                        return Convert.ToInt32(obj);
                    }
                }
            }
    
            public static DataTable Query(string sql, params NpgsqlParameter[] param)
            {
                using (NpgsqlConnection connection = new NpgsqlConnection(connectionString))
                {
                    NpgsqlCommand cmd = new NpgsqlCommand(sql, connection);
                    PrepareCommand(cmd, connection, null, sql, param);
                    NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd);
                    DataSet ds = new DataSet();
                    da.Fill(ds, "ds");
                    cmd.Parameters.Clear();
                    return ds.Tables[0];
                }
            }
    
    
            #endregion
    
    
            #region 存储过程
            public static int RunProcedure(string storedProcName, IDataParameter[] parameters)
            {
                using (NpgsqlConnection connection = new NpgsqlConnection(connectionString))
                {
                    NpgsqlCommand command = BuildQueryCommand(connection, storedProcName, parameters);
                    connection.Open();
                    return command.ExecuteNonQuery();
                }
            }
    
    
            #endregion
    
    
    
            #region private
    
    
            private static void PrepareCommand(NpgsqlCommand cmd, NpgsqlConnection conn, NpgsqlTransaction trans, string cmdText, NpgsqlParameter[] param)
            {
                if (conn.State != ConnectionState.Open)
                    conn.Open();
                cmd.Connection = conn;
                cmd.CommandText = cmdText;
                if (trans != null)
                    cmd.Transaction = trans;
                cmd.CommandType = CommandType.Text;//cmdType;
                if (param != null)
                {
                    foreach (NpgsqlParameter parameter in param)
                    {
                        if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
                            (parameter.Value == null))
                        {
                            parameter.Value = DBNull.Value;
                        }
                        cmd.Parameters.Add(parameter);
                    }
                }
            }
            private static NpgsqlCommand BuildQueryCommand(NpgsqlConnection connection, string storedProcName, IDataParameter[] parameters)
            {
                NpgsqlCommand command = new NpgsqlCommand(storedProcName, connection);
                command.CommandType = CommandType.StoredProcedure;
                foreach (NpgsqlParameter parameter in parameters)
                {
                    if (parameter != null)
                    {
                        // 检查未分配值的输出参数,将其分配以DBNull.Value.
                        if ((parameter.Direction == ParameterDirection.InputOutput || parameter.Direction == ParameterDirection.Input) &&
                            (parameter.Value == null))
                        {
                            parameter.Value = DBNull.Value;
                        }
                        command.Parameters.Add(parameter);
                    }
                }
    
                return command;
            }
            #endregion
    
        }
    }
  • 相关阅读:
    Struts2+Uploadify文件上传使用详解
    jquery常用代码集锦
    springmvc+hibernate入门-揭开神秘的面纱
    Jqgrid入门-Jqgrid格式化数据(九)
    Jqgrid入门-Jqgrid分组的实现(八)
    利用jekyll架设个人博客
    Centos7安装jekyll
    服务器改造个人工作站经验总结
    王爽汇编环境搭建
    由于没有公钥,下列签名无法进行验证
  • 原文地址:https://www.cnblogs.com/Learnall/p/14367157.html
Copyright © 2011-2022 走看看