最近开始做C#的DotNet的工作,因为对PostgreSQL数据库比较有兴趣,所以自己研究了一下如何访问PostgreSQL的
数据库的问题。
1、为了访问PostgreSQL数据库,需要从pgfoundry网站,下载Npgsql .Net Data Provider for Postgresql的组件。
注:因为使用的是DotNet3.5,所以下载了Npgsql2.0.6-bin-ms.net3.5sp1.zip。
2、解压缩zip文件,把解压缩的目录中的Npgsql.dll、Mono.Security.dll复制到C#工程的obj目录下,然后在VS2008中
,把 Npgsql.dll文件加入到References。
3、在需要使用Npgsql的C#文件头,加入如下的using语句。
view plaincopy to clipboardprint?
using Npgsql; 
using Npgsql;
4、创建一个PostgreSQL的数据库连接
view plaincopy to clipboardprint?
/* 用指定的connectionString,去实例化一个NpsqlConnection的对象*/ 
string connectionString = "Server=127.0.0.1;Port=5432;User Id=test;Password=test;Database=testdb;" 
NpgsqlConnection conn = new NpgsqlConnection(string connectionString); 
// 打开一个数据库连接,在执行相关SQL之前调用 
conn.Open(); 
//关闭一个数据库连接,在执行完相关SQL之后调用 
conn.Close(); 
/* 用指定的connectionString,去实例化一个NpsqlConnection的对象*/
string connectionString = "Server=127.0.0.1;Port=5432;User Id=test;Password=test;Database=testdb;"
NpgsqlConnection conn = new NpgsqlConnection(string connectionString);
// 打开一个数据库连接,在执行相关SQL之前调用
conn.Open();
//关闭一个数据库连接,在执行完相关SQL之后调用
conn.Close();
5、用NpgsqlCommand.ExecuteScalar()方法获得唯一值的检索结果
view plaincopy to clipboardprint?
try 

string sql = "select count(*) from test"; 
conn.Open(); 
NpgSqlCommand objCommand = new NpgSqlCommand(sql, conn); 
int count = Convert.ToInt32(objCommand.ExecuteScalar()); 

finally 

conn.Close(); 

try
{
string sql = "select count(*) from test";
conn.Open();
NpgSqlCommand objCommand = new NpgSqlCommand(sql, conn);
int count = Convert.ToInt32(objCommand.ExecuteScalar());
}
finally
{
conn.Close();
}
6、用NpgsqlCommand.ExecuteReader() 方法获得一个结果集的检索结果(conn的Open和Close调用省略)
view plaincopy to clipboardprint?
string sql = "select * from test"; 
NpgsqlCommand objCommand = new NpgsqlCommand(sql,conn); 
NpgsqlDataReader dr = command.ExecuteReader(); 
while(dr.Read()) 

for (i = 0; i < dr.FieldCount; i++) 

Console.Write("{0} \t", dr[i]); //获得字段名 

int testId = dr["id"]; // 获得指定字段的值。(id是test表的一个字段) 
…… 
Console.WriteLine(); 

dr.Close(); 
string sql = "select * from test";
NpgsqlCommand objCommand = new NpgsqlCommand(sql,conn);
NpgsqlDataReader dr = command.ExecuteReader();
while(dr.Read())
{
for (i = 0; i < dr.FieldCount; i++)
{
Console.Write("{0} \t", dr[i]); //获得字段名
}
int testId = dr["id"]; // 获得指定字段的值。(id是test表的一个字段)
……
Console.WriteLine();
}
dr.Close();
7、用NpgsqlCommand.ExecuteNonQuery()方法对指定表进行添加、更新和删除一条记录的操作
添加记录:
view plaincopy to clipboardprint?
string sql = "insert test values (1,200)"; 
NpgsqlCommandobjCommand = new NpgsqlCommand(sql, conn); 
objCommand.ExecuteNonQuery(); 
string sql = "insert test values (1,200)";
NpgsqlCommandobjCommand = new NpgsqlCommand(sql, conn);
objCommand.ExecuteNonQuery();
更新记录
view plaincopy to clipboardprint?
sql = "update test set price=300 where id=1"; 
NpgsqlCommandobjCommand = new NpgsqlCommand(sql, conn); 
objCommand.ExecuteNonQuery(); 
sql = "update test set price=300 where id=1";
NpgsqlCommandobjCommand = new NpgsqlCommand(sql, conn);
objCommand.ExecuteNonQuery();
删除记录
view plaincopy to clipboardprint?
sql = "delete from test where id=1"; 
NpgsqlCommandobjCommand = new NpgsqlCommand(sql, conn); 
objCommand.ExecuteNonQuery(); 
sql = "delete from test where id=1";
NpgsqlCommandobjCommand = new NpgsqlCommand(sql, conn);
objCommand.ExecuteNonQuery();
8、用NpgsqlDataAdapter.Fill方法,把检索的结果集放到DataSet object中,这样可以使用DataSet object设置
DotNet的DataGridView控件的DataSource属性,这样在DataGridView中显示从表中取出的所有记录。
view plaincopy to clipboardprint?
string sql = "select id,price from test"; 
DataSet ds = new DataSet(); 
NpgsqlDataAdapter objAdapter = new NpgsqlDataAdapter(sql, conn); 
objAdapter.Fill(ds, "a"); //“a”这个表是自定义的 
dgvBaseResult.DataSource = ds.Tables["a"]; //dgvBaseResult是DataGridView的一个Object。 
string sql = "select id,price from test";
DataSet ds = new DataSet();
NpgsqlDataAdapter objAdapter = new NpgsqlDataAdapter(sql, conn);
objAdapter.Fill(ds, "a"); //“a”这个表是自定义的
dgvBaseResult.DataSource = ds.Tables["a"]; //dgvBaseResult是DataGridView的一个Object。
注:SQL语句设置也可以用下面的语句 objAdapter.SelectCommand.CommandText = sql;

C#访问postgresql数据库的更多相关文章

  1. C/C++访问PostgreSQL数据库

    编号:1011时间:2016年5月17日09:46:01功能:Windows环境下C/C++访问PostgreSQL数据库https://segmentfault.com/a/119000000062 ...

  2. Postgresql ODBC驱动,用sqlserver添加dblink跨库访问postgresql数据库

    在同样是SQLserver数据库跨库访问时,只需要以下方法 declare @rowcount int set @rowcount =(select COUNT(*) from sys.servers ...

  3. C#访问PostGreSQL数据库的方法 http://www.jb51.net/article/35643.htm

    这次的项目中的一个环节要求我把PostGreSQL数据取出来,然后放到SqlServer里,再去处理分析. http://www.jb51.net/article/35643.htm - 我对Post ...

  4. C# 应用 - 封装类访问 Postgresql 数据库

    引入库类 连接数据库 访问数据库 1)增删改数据库 2)查数据库 数据转换 事务 1. 引入库类 引入 Npgsql.dll using Npgsql; using NpgsqlTypes; 2. 连 ...

  5. 通过unixODBC访问PostgreSQL数据库

    磨砺技术珠矶,践行数据之道,追求卓越价值回到上一级页面:PostgreSQL基础知识与基本操作索引页    回到顶级页面:PostgreSQL索引页[作者 高健@博客园  luckyjackgao@g ...

  6. 使用libpqxx访问PostgreSQL数据库(mingw编译libpqxx)

    编译前准备    1. 安装mingw 安装mingw(不管是直接安装mingw还是其他如code::blocks附带安装的mingw),输入:gcc -v可显示如下图的版本信息,我的版本是mingw ...

  7. 将gitlab中的postgresql数据库开通远程访问

    postgresql数据库是gitlab的一个配置数据库,记录gitlab的一些配置信息. 我们访问gitlab中的postgresql数据有本地命令行访问和远程可视化软件访问2种方式. (一)本地命 ...

  8. PostgreSQL数据库中跨库访问解决方案

    PostgreSQL跨库访问有3种方法:Schema,dblink,postgres_fdw. 方法A:在PG上建立不同SCHEMA,将数据和存储过程分别放到不同的schema上,经过权限管理后进行访 ...

  9. 怎样从外网访问内网PostgreSQL数据库?

    本地安装了一个PostgreSQL数据库,只能在局域网内访问到,怎样从外网也能访问到本地的PostgreSQL数据库呢?本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动PostgreSQ ...

随机推荐

  1. yum-config-manager YUM安装遭遇: [Errno 256] No more mirrors to try CentOS yum之$releasever和$basearch

    YUM安装遭遇: [Errno 256] No more mirrors to try createrepo 有问题. CentOS yum之$releasever和$basearch分类: 操作系统 ...

  2. Spring冲刺阶段二(1)

    我们首先是根据同学们的评价来找补自己的不足之处,其中同学们反应最多的是我们的界面不够好看,但是我觉得虽然不好看但算是比较简洁.其次是没有体现内网在其中发挥的作用,这点我们还没有实现. 根据这些不足之处 ...

  3. [LeetCode]题解(python):089 Gray Code

    题目来源 https://leetcode.com/problems/gray-code/ The gray code is a binary numeral system where two suc ...

  4. JS之tagNaem和nodeName

    nodeName是节点的属性,tagName是元素的属性.元素是节点的子集.不是任何节点都有tagName的,比如文本节点,仅有nodeName属性. 这个和css中的倾斜和斜体的关系是一样的.不是所 ...

  5. jQuery动态对表格Table进行添加或删除行以及修改列值操作

    jQuery,不仅可以以少量的代码做很多操作,而且兼容性好(各种浏览器,各种版本). 下面用jQuery动态对表格Table进行添加或删除行以及修改列值操作 1.jQuery代码 <script ...

  6. 由一个Servlet 看java入门常犯的几个错误

    安装完java环境后,cmd-javac 报错           ------------->环境变量配错了,最后全配成系统变量,ok了 能浪费一天的时间 写一个最简单的Servlet ,to ...

  7. gradle编译andoroid

    下载sdk ,api, build tool 1. 取消离线模式 2. 取消代理模式

  8. IIS URL Rewrite redirect from one Domain to another

    IIS URL Rewrite enables Web administrators to create powerful rules to implement URLs that are easie ...

  9. electron Uncaught ReferenceError: jQuery is not defined

    用electron写桌面程序时 ui部分的html页面引入的js会用到jquery 用常规的方式引入是不行的,会抛出如题的异常 <script type="text/javascrip ...

  10. tomcat 6.0.44 “has failed to stop it. This is very likely to create a memory leak” 问题调查

    1. 问题起因 我们项目中缓存模块某个实现采用了ehcache(2.4.3),当项目部署到tomcat中后,对tomcat做停止服务操作(点击eclipse的console红色的停止按钮,奇怪的是有小 ...