由于工作需要,数据库是postgressql的,本来以为很简单的,结果弄了一晚上,为了总结经验,现将C#连接PGSQL(postgres sql)的资料整理如下。

一、总体思路

1、通过第三方Npgsql的的dll实现数据库的连接。

2、连接文件写在web.config中。

3、连接类写成pghelper。

这样,在程序中,可以像sqlhelper一样调用了。

二、下载资料

1、Npgsql的下载地址http://pgfoundry.org/projects/npgsql/,

2、当然,你需要安装postgres sql,去官网下载安装,过程略。

三、配置与代码

1、web.config 中,配置<connectionStrings>

放于<configuration></configuration>内任何位置均可。

样本如下:

<configuration>

  <connectionStrings>

<add name="postgre" connectionString="PORT=5433;DATABASE=test;HOST=localhost;PASSWORD=123;USER ID=postgres"/>
      </connectionStrings>

</configuration>

解释connectionString里存的就是连接PG数据库的配置信息了,具体略。

2、写一个pghelper类。

在类中,插入如何下的方法:

 public static string ConnectionString = ConfigurationManager.ConnectionStrings["postgre"].ToString();   

        /// <summary>
/// 执行SQL语句
/// </summary>
/// <param name="sql">SQL</param>
/// <returns>成功返回大于0的数字</returns>
public static int ExecuteSQL(string sql)
{
int num2 = -;
using (NpgsqlConnection connection = new NpgsqlConnection(ConnectionString))
{
using (NpgsqlCommand command = new NpgsqlCommand(sql, connection))
{
try
{
connection.Open();
num2 = command.ExecuteNonQuery();
}
catch (NpgsqlException exception)
{
throw new Exception(exception.Message);
}
finally
{
connection.Close();
}
}
}
return num2;
} //带参数的执行查询,不返回结果,返回影响行数
//执行SQL语句并返回受影响的行数
public static int ExecuteNonQuery(string sql, params NpgsqlParameter[] parameters)
{
using (NpgsqlConnection conn = new NpgsqlConnection(ConnectionString))
{
conn.Open();
using (NpgsqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
//foreach (SqlParameter param in parameters)
//{
// cmd.Parameters.Add(param);
//}
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteNonQuery();
}
}
} //执行查询,并返回查询所返回的结果集中第一行的第一列。忽略额外的列或行。
public static object ExecuteScalar(string sql, params NpgsqlParameter[] parameters)
{
using (NpgsqlConnection conn = new NpgsqlConnection(ConnectionString))
{
conn.Open();
using (NpgsqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters);
return cmd.ExecuteScalar(); }
}
} //查询并返回结果集DataTable,一般只用来执行查询结果比较少的sql。
public static DataTable ExecuteDataTable(string sql, params NpgsqlParameter[] parameters)
{
using (NpgsqlConnection conn = new NpgsqlConnection(ConnectionString))
{
conn.Open();
using (NpgsqlCommand cmd = conn.CreateCommand())
{
cmd.CommandText = sql;
cmd.Parameters.AddRange(parameters); NpgsqlDataAdapter adapter = new NpgsqlDataAdapter(cmd);
DataSet dataset = new DataSet();
adapter.Fill(dataset);
return dataset.Tables[];
}
} //查询较大的数据用 DateRead(),但应尽可能用分页数据,仍然用datatable更好。
}

四、使用。

使用时,就可以像SQLHELPER一样用了。

int i;
i = pghelper.ExecuteSQL("update student set classid=113 where id=4");
context.Response.Write("这是无参数的ExecuteSQL:" + i + "<br/>"); i = pghelper.ExecuteNonQuery("update student set classid=113 where id=@id", new NpgsqlParameter("@id", ));
context.Response.Write("这是有参数的调用ExecuteNonQuery:" + i + "<br/>"); string s = pghelper.ExecuteScalar("select count(name) from student").ToString();
context.Response.Write("这是exeScalar调用:" + s+"<br/><hr/>"); DataTable dt = new DataTable();
dt = pghelper.ExecuteDataTable("select id,name from student");
context.Response.Write("这是ExecuteDataTable:<br/>"); for (int j=;j<dt.Rows.Count;j++)
{
DataRow dr = dt.Rows[j];
context.Response.Write(dr["id"].ToString()+dr["name"].ToString());
}

其实,ExecuteNonQuery完全可以取代ExecuteSQL。使用习惯看个人吧。

好了,就写到这里了,不当之处还请各位看官体谅

c# 访问postgressql,使用pghelper访问pgsql的更多相关文章

  1. Nginx禁止ip访问或IP网段访问方法

    Nginx禁止ip访问可以防止指定IP访问我们的网站,本例子可以实现是防止单IP访问或IP网段访问了,非常的有用我们一起来看看吧. 常用的linux做法 iptables参考规则  代码如下 复制代码 ...

  2. Java知多少(19)访问修饰符(访问控制符)

    Java 通过修饰符来控制类.属性和方法的访问权限和其他功能,通常放在语句的最前端.例如: 1 public class className { 2 // body of class 3 } 4 pr ...

  3. php获得访问来源(手机wap访问、电脑web访问)

    为了更好的用户体验,本主题默认支持wap和web两种访问样式,wap访问将不包含任何脚本.样式也是重新撰写,不支持更多页面,只支持首页.详情页, 评论框.登录等内容将陆续更新到wap内容里.如果想测试 ...

  4. dedecms由子目录访问修改为根目录访问

    现在我需要将原来位于xampp/htdocs/zm下的网站修改到D:/lyh/webhome目录下访问,原来的访问路径为http://localhost/zm,现在为http://www.yihui. ...

  5. 重新想象 Windows 8 Store Apps (23) - 文件系统: 文本的读写, 二进制的读写, 流的读写, 最近访问列表和未来访问列表

    原文:重新想象 Windows 8 Store Apps (23) - 文件系统: 文本的读写, 二进制的读写, 流的读写, 最近访问列表和未来访问列表 [源码下载] 重新想象 Windows 8 S ...

  6. 易语言关于使用CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试

    易语言关于使用 CURL,网页_访问,网页_访问S,网页_访问_对象,鱼刺(winHttpW)发送Get性能测试 测试模块情况: |-精易模块5.8  |-鱼刺类Http  |-libCURL +++ ...

  7. 解决mysql中只能通过localhost访问不能通过ip访问的问题

    解决mysql中只能通过localhost访问不能通过ip访问的问题 原因是没开权限 SELECT * FROM USER WHERE USER='root'; grant all privilege ...

  8. Python第五天 文件访问 for循环访问文件 while循环访问文件 字符串的startswith函数和split函数 linecache模块

    Python第五天   文件访问    for循环访问文件    while循环访问文件   字符串的startswith函数和split函数  linecache模块 目录 Pycharm使用技巧( ...

  9. 大数据实操2 - hadoop集群访问——Hadoop客户端访问、Java API访问

    上一篇中介绍了hadoop集群搭建方式,本文介绍集群的访问.集群的访问方式有两种:hadoop客户端访问,Java API访问. 一.集群客户端访问 Hadoop采用C/S架构,可以通过客户端对集群进 ...

  10. Chapter6_访问权限控制_访问权限修饰词

    Java中有四种访问权限,public,private,protected和包访问权限,它们是置于类中每一个成员之前的定义,无论是一个域还是一个方法,下面一一介绍. 一.包访问权限 如果不提供任何访问 ...

随机推荐

  1. 直到黎明 Until Dawn 后感

    直到黎明 会免游戏.白金神作.近些年的恐怖电影都有游戏化的趋势,韩国的某岩vlog,美国的真心话大冒险,都把观众作为meta代入游戏,几乎模糊了游戏与游戏的边界,直到黎明这部电影,与当年的暴雨和超凡双 ...

  2. python/numpy/pandas数据操作知识与技巧

    pandas针对dataframe各种操作技巧集合: filtering: 一般地,使用df.column > xx将会产生一个只有boolean值的series,以该series作为dataf ...

  3. [OPENSSL下载][证书] OPENSSL将PFX证书转换为PEM格式

    OpenSSL Convert PFX Convert PFX to PEM openssl pkcs12 -in certificate.pfx -out certificate.cer -node ...

  4. Winform 多个窗口编辑同一条数据同步的实现

    场景: 一个主窗口中,可以在列表(DataGridView)里选中一条记录编辑,打开一个编辑窗口(非模态窗口),编辑窗口保存后需要刷新父窗口,由于编辑窗口是非模态窗口,如果打开了多个窗口,并且都是编辑 ...

  5. Intel Nehalem微架构Calpella平台机型Windows XP系统下如何开启AHCI硬盘工作模式(XP系统下如何加载AHCI驱动)

    问题描述用户来电表示使用IDE模式安装XP系统后开启AHCI模式会出现开机蓝屏重启的问题,咨询如何在XP下加载AHCI驱动,以便开启BIOS中AHCI选项来发挥硬盘的最佳性能   问题分析 Windo ...

  6. ELT探索之旅2 kettle配置

    java环境变量配置: path增加    ;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 双击spoon.bat即可

  7. 多线程应用-函数方式(thread)

    多线程只能使用一颗CPU,无法发挥多核心的优势.计算密集型用python的多线程效果不明显的,I/O密集型才能看出效果,可以发挥多核优势. GIL是全局资源锁,所以,如果没有涉及到资源的调用,是不会体 ...

  8. Linux优化远程SSH连接

    优化远程SSH连接 1.Linxu和Window的ssh连接区别 Windom默认3389端口,管理员administartor 普通是guest Linux 默认22端口 管理员root 普通一堆 ...

  9. java 规范

    https://blog.csdn.net/mengxiangsun/article/details/79020226

  10. C++ 读书笔记1

    c++ 笔记1 body { font-family: Helvetica, arial, sans-serif; font-size: 14px; line-height: 1.6; padding ...