C# PgSql工具类

目录

1、安装pgsql工具包

2、连接pgsql数据库

3、执行一条sql语句

4、执行多条SQL语句

5、执行sql语句返回datatable

6、执行sql返回泛型list集合

7、转换空值


1、安装pgsql工具包
2、连接pgsql数据库

public NpgsqlConnection Conn = null;//连接数据库

public string Host = "localhost";

public string Username = "postgres";

public string Port = "5432";

public string Password = "123456";

public string Database = "postgres"; //基础数据库 根据需求更改数据库名称

public bool StarConn()

{

try

{

string connstr = string.Format(@"Host={0};Database={1};Username={2};Port={3};Password={4};MaxPoolSize=500;", Host, Database, Username, Port, Password);

Conn = new NpgsqlConnection(connstr);

if (Conn.State != ConnectionState.Open)

{

Conn.Open();

}

return Conn.State == ConnectionState.Open;

}

catch (Exception ex)

{//异常处理

return false;

}

}

3、执行一条sql语句

public bool ExcuteNonQuery(string sql, NpgsqlParameter[] param = null)

{

try

{

if (Conn.State != ConnectionState.Open)

{

Conn.Open();

}

using (NpgsqlCommand com = new NpgsqlCommand(sql, Conn))

{

if (param != null)//添加参数

{

SetParmDBNull(param);

com.Parameters.AddRange(param);

}

int r = com.ExecuteNonQuery();

return true;

}

}

catch (Exception ex)

{

//"执行SQL语句异常"+ ex.Message;

return false;

}

}

4、执行多条SQL语句

public bool ExcuteNonQueryBatch(List<String> SQLStringList)

{

try

{

if (Conn.State != ConnectionState.Open)

{

Conn.Open();

}

using (NpgsqlCommand cmd = new NpgsqlCommand())

{

cmd.Connection = Conn;

NpgsqlTransaction tx = Conn.BeginTransaction();

cmd.Transaction = tx;

int count = 0;

for (int i = 0; i < SQLStringList.Count; i++)

{

cmd.CommandType = CommandType.Text;

cmd.CommandText = SQLStringList[i];

count += cmd.ExecuteNonQuery();

}

tx.Commit();

return true;

}

}

catch (Exception ex)

{

//"批量执行sql语句异常"+ ex.Message;

return false;

}

}

5、执行sql语句返回datatable

public DataTable GetDataTable(string strsql, NpgsqlParameter[] param = null)//获取datatable

{

DataTable dt = new DataTable();

try

{

if (Conn.State != ConnectionState.Open)

{

Conn.Open();

}

using (var nda = new NpgsqlDataAdapter(strsql, Conn))

{

if (param != null)//添加参数

{

SetParmDBNull(param);

nda.SelectCommand.Parameters.AddRange(param);

}

nda.Fill(dt);

return dt;

}

}

catch (Exception ex) { //"查询数据返回datatable异常"+ ex.Message; return dt; }

}

6、执行sql返回泛型list集合

public List<T> GetList<T>(string strsql)

{

List<T> ts = new List<T>();

try

{

if (Conn.State != ConnectionState.Open)

{

Conn.Open();

}

T t = default(T);

using (var nda = new NpgsqlDataAdapter(strsql, Conn))

{

DataTable dt = new DataTable();

nda.Fill(dt);

// 获得此模型的类型

// Type type = typeof(McDevice);

string tempName = "";

foreach (DataRow dr in dt.Rows)

{

t = Activator.CreateInstance<T>();

// 获得此模型的公共属性

PropertyInfo[] propertys = t.GetType().GetProperties();

foreach (PropertyInfo pi in propertys)

{

tempName = pi.Name; // 检查DataTable是否包含此列

if (dt.Columns.Contains(tempName))

{

// 判断此属性是否有Setter

if (!pi.CanWrite) continue;

object value = dr[tempName];

if (value != DBNull.Value)

pi.SetValue(t, value, null);

}

}

ts.Add(t);

}

}

}

catch (Exception ex){ CheckResults(false,"查询数据返回lis集合异常"+ ex.Message); }

return ts;

}

7、转换空值

public void SetParmDBNull(NpgsqlParameter[] param)

{

foreach (var p in param)

{

if (p.Value == null)

{

p.Value = DBNull.Value;

}

}

}

相关推荐
2401_850491656 小时前
如何监控当前正在执行的SQL进程_SHOW PROCESSLIST
jvm·数据库·python
m0_702036536 小时前
CSS如何优化浮动导致的布局渲染性能_清除浮动策略
jvm·数据库·python
m0_591364736 小时前
golang如何实现语言包自动加载_golang语言包自动加载实现指南
jvm·数据库·python
盖世英雄酱581367 小时前
6000条数据执行时间9s??
数据库·后端
dinglu1030DL7 小时前
如何让水平滚动条始终固定在页面底部
jvm·数据库·python
2301_783848657 小时前
Python Selenium怎么定位元素_By.XPATH与By.CSS_SELECTOR操作DOM节点
jvm·数据库·python
2501_901006477 小时前
如何解决OUI图形界面无法调用_xhost与DISPLAY变量设置
jvm·数据库·python
2301_787312437 小时前
mysql数据库索引碎片化排查方法_mysqlInnoDB存储结构
jvm·数据库·python
qq_414256577 小时前
组件懒加载如何处理 JS 报错后的重试加载?保障应用高可用性实战
jvm·数据库·python
qq_392690667 小时前
如何优化SQL长文本字段查询_通过选择性返回减少IO消耗
jvm·数据库·python