C#访问PostGreSQL数据库的方法

我对PostGreSQL只是一知半解,记录这个过程是希望如果以后微软技术方向的人遇到类似的需求,可以有个比较直接的的参考。
在不熟悉的知识领域里,总是有搜索引擎可以帮到我。

初步了解PostGreSQL数据库及数据形态

首先我想看看PostGreSQL的数据库以及我想要获取的数据形态是什么样子的,Linux和PostGreSQL这两个关键字我都不熟悉,搜了一下找到了一个可以连通PostGreSQL数据库的Windows客户端,叫pgAdmin,我装的是III版本,应该是比较新的,下载安装后看到界面:

点击那个电源插头的logo可以新建服务器连接

名称就是在PGAdmin客户端的显示名,可以自定义。
SSL呢,有这么多选项,我不是很了解干什么用的,反正我选的允许。

端口号,默认PostGreSQL的端口号是5432,当然可以被修改,自定义成别的端口号
全部填写完点击确定,就可以看到数据库了。
我不在客户现场,连不上PostGreSQL的库,所以下面就不能截图了。

在PGAdmin里,可以写查询语句,如果你有权限的话,可以看到返回的结果集。
我点开一个窗口,试着写了一条查询语句如下:
Select top 10 * from TableObj
执行,发现结果集窗口提示语法错误,问下群里的兄弟们,得知,正确的写法应该是这样的:
Select * from TableObj limit 5
语法规则跟sql语句还是有区别的。
执行,提示找不到对象“TableObj”找到TableObj的上一层容器“ContainerObj”,修改如下
SELECT* FROM ContainerObj.TableObj limit 5
点击执行,终于看到了结果集。
相对sqlserver来说,PGAdmin的结果集显示界面表头都有两行,一行是字段名,一行是字段的数据类型。这点很有爱。
在PostGreSQL的查询语句中,大小写是不敏感的。
关于PostgreSql语法规则,在CSDN上找到了《PostgreSql语法详细手册》,不过这家伙要三个资源分。
好了看到PostGreSQL数据库了,下面我要尝试敲C#代码测试去取PostGreSQL的数据。
C#连接PostGreSQL数据库

有个东东,叫Npgsql,是PostgreSQL的一个.NET数据提供程序。首先需要下载它,实际上我们只需要引用两个dll:

经过我的测试,如果只引用了Npgsql.dll,那么你的程序运行起来之后会报错,提示找不到对Mono.Security.dll引用的依赖项。
引用了这两个dll,你还需要在你的代码中加上using。
using Npgsql;
代码就很简单了。
写了个拼字符串的,比较二。txt什么什么的都是Winform的textbox


代码如下:

///
/// 根据填写的信息拼数据库连接串
///
/// 数据库连接串
private string getConnectStr()
{
   StringBuilder sb = new StringBuilder();
   string str = string.Empty;
   sb.Append("Server=");
   sb.Append(txtServer.Text);
   sb.Append(";Port=");
   sb.Append(txtPort.Text);
   sb.Append(";User Id=");
   sb.Append(txtUID.Text);
   sb.Append(";Password=");
   sb.Append(txtPassword.Text);
   sb.Append(";Database=");
   sb.Append(txtDB.Text);
   sb.Append(";");
   str = sb.ToString();
   return str;
}

实际上数据库连接串就是这么样的一个格式


代码如下:

"Server=192.168.1.100;Port=5432;UserId=mike;Password=secret;Database=mikedb;"

///
/// 测试连接PostGreSQL数据库
///
/// Success/Failure
private string TestConnection()
{
   string str = getConnectStr();
   string strMessage = string.Empty;
   try

{
       NpgsqlConnection conn = new NpgsqlConnection(str);
       conn.Open();
       strMessage = "Success";
       conn.Close();
   }
   catch
   {
       strMessage = "Failure";
   }
   return strMessage;
}

///
/// 测试获取数据(使用要加try、catch)
///
private void TestGetData()
{
   IDbConnection dbcon;
   dbcon = newNpgsqlConnection(getConnectStr());
   dbcon.Open();
   IDbCommand dbcmd = dbcon.CreateCommand();
   dbcmd.CommandText = " SELECT * FROM ContainerObj.TableObj limit 5";
   IDataReader dr = dbcmd.ExecuteReader();
   string strResult = string.Empty;
   while (dr.Read())
   {
       stringstrRecord_Time_Int = dr[0].ToString();
       stringstrIP = dr[1].ToString();
       stringstrFullPath = dr[2].ToString();
       stringstrUpload_Size = dr[3].ToString();
       stringstrDownLoad_Size = dr[4].ToString();
       strResult += "record_time_int: " + strRecord_Time_Int+ " | ip:" + strIP + " | fullpath:" +strFullPath + " | upload_size:" +strUpload_Size + " | download_size:"+ strDownLoad_Size + "\n";
   }
   dr.Close();
    dr = null;
   lblRes.Text = strResult;
}

Form很简单,只为测试功能。下面截图是之前在现场截的,处理了一下,隐去了一些信息。

(0)

相关推荐

  • C#连接MySql数据库的方法

    1.要连接MySql数据库必须首先下载MySql官方的连接.net的文件,文件下载地址为http://dev.mysql.com/downloads/connector/net/6.6.html#downloads ,下载平台选择.Net&Mono,下载ZIP免安装版.2.解压缩刚才下载的mysql-connector-net-6.6.6-noinstall.zip文件,里面有几个版本选择,在这里我选V4, 选中这几个文件,然后添加到C#项目的引用中,然后就可以编写程序进行数据库的操作了. 3.

  • C#访问SQLServer增删改查代码实例

    一个专门实现访问sql server数据库增删改查的操作代码,分享给大家,具体内容如下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data; usi

  • C#实现的SQL备份与还原功能示例

    本文实例讲述了C#实现的SQL备份与还原功能.分享给大家供大家参考,具体如下: //记得加 folderBrowserDialog1 openFileDialog1 控件 using System.Data.SqlClient; //连接数据库 公共变量 namespace WindowsApplication1.GoodMenhod { class getSqlConnection { string sql = "Data Source=win7-pc;database=Kc;uid=sa;p

  • 详解C#中SqlParameter的作用与用法

    一般来说,在更新DataTable或是DataSet时,如果不采用SqlParameter,那么当输入的Sql语句出现歧义时,如字符串中含有单引号,程序就会发生错误,并且他人可以轻易地通过拼接Sql语句来进行注入攻击. string sql = "update Table1 set name = 'Pudding' where ID = '1'";//未采用SqlParameter SqlConnection conn = new SqlConnection(); conn.Conne

  • C#操作SQLite方法实例详解

    本文实例讲述了C#操作SQLite方法.分享给大家供大家参考.具体分析如下: 地址: System.Data.Sqlite入手... 首先import/using: 复制代码 代码如下: using System.Data.SQLite; Connection和Command: private SQLiteConnection conn; private SQLiteCommand cmd; 连接db: conn = new SQLiteConnection("Data Source=c:\\t

  • C#实现较为实用的SQLhelper

    第一次写博客,想不到写什么好b( ̄▽ ̄)d ,考虑的半天决定从sqlhelper开始,sqlhelper对程序员来说就像helloworld一样,很简单却又很重要,helloworld代表着程序员萌新第一次写代码,而sqlhelper则是初次接触数据库(不知道这种说法对不对). 好了不废话了,下面直接上代码(无话可说了): public class SQLHelper { // 超时时间 private static int Timeout = 1000; // 数据库名称 public con

  • C#防SQL注入代码的三种方法

    对于网站的安全性,是每个网站开发者和运营者最关心的问题.网站一旦出现漏洞,那势必将造成很大的损失.为了提高网站的安全性,首先网站要防注入,最重要的是服务器的安全设施要做到位. 下面说下网站防注入的几点要素. 一:丢弃SQL语句直接拼接,虽然这个写起来很快很方便. 二:如果用SQL语句,那就使用参数化,添加Param 三:尽可能的使用存储过程,安全性能高而且处理速度也快 四:屏蔽SQL,javascript等注入(很是主要的),对于每个文件写是不太可能的.所以要找到对所有文件起作用的办法.我在网上

  • C#与SQL连接:GridView控件对数据库的操作

    GridView和DataGrid的异同 GridView 是 DataGrid的后继控件,在.net framework 2 中,虽然还存在DataGrid,但是GridView已经走上了历史的前台,取代DataGrid的趋势已是势不可挡.GridView和DataGrid功能相似,都是在web页面中显示数据源中的数据,将数据源中的一行数据,也就是一条记录,显示为在web页面上输出表格中的一行. GridView相对于DataGrid来说,具有如下优势,功能上更加丰富,因为提供了智能标记面板(

  • c#使用file.copy实现文件备份示例

    步骤: 1.遍历D盘Source文件夹找出所有名称包含LTE的文件,文件路径存放到List<string>中2.遍历List<string>,把所有文件Copy到E盘的备份文件夹中 复制代码 代码如下: using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.DirectoryServices;using System.IO; namespace C

  • c#连接sqlserver数据库、插入数据、从数据库获取时间示例

    c#连接sqlserver.插入数据.从数据库获取时间 复制代码 代码如下: using System;using System.Data.SqlClient; namespace Test{    //连接数据库    public class Connection    {        private static string connectionString =            "Server = 192.168.1.222;" +            "D

  • C#实现的sqlserver操作类实例

    本文实例讲述了C#实现的sqlserver操作类.分享给大家供大家参考,具体如下: using System; using System.Collections.Generic; using System.Web; using System.Data.OleDb; using System.Data; using System.Data.SqlClient; /// <summary> ///SqlConnDb类,适用于Sql数据库操作 /// </summary> public

  • c#操作sql server2008 的界面实例代码

    先是查询整张表,用到combobox选择查询哪张表,最后用DataGridView显示 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace WindowsForms

随机推荐