亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

C#訪問PostGreSQL數(shù)據(jù)庫(kù)的方法

 更新時(shí)間:2013年04月17日 11:04:19   作者:  
這次的項(xiàng)目中的一個(gè)環(huán)節(jié)要求我把PostGreSQL數(shù)據(jù)取出來(lái),然后放到SqlServer里,再去處理分析。

我對(duì)PostGreSQL只是一知半解,記錄這個(gè)過(guò)程是希望如果以后微軟技術(shù)方向的人遇到類似的需求,可以有個(gè)比較直接的的參考。
在不熟悉的知識(shí)領(lǐng)域里,總是有搜索引擎可以幫到我。

初步了解PostGreSQL數(shù)據(jù)庫(kù)及數(shù)據(jù)形態(tài)

首先我想看看PostGreSQL的數(shù)據(jù)庫(kù)以及我想要獲取的數(shù)據(jù)形態(tài)是什么樣子的,Linux和PostGreSQL這兩個(gè)關(guān)鍵字我都不熟悉,搜了一下找到了一個(gè)可以連通PostGreSQL數(shù)據(jù)庫(kù)的Windows客戶端,叫pgAdmin,我裝的是III版本,應(yīng)該是比較新的,下載安裝后看到界面:

點(diǎn)擊那個(gè)電源插頭的logo可以新建服務(wù)器連接

名稱就是在PGAdmin客戶端的顯示名,可以自定義。
SSL呢,有這么多選項(xiàng),我不是很了解干什么用的,反正我選的允許。

端口號(hào),默認(rèn)PostGreSQL的端口號(hào)是5432,當(dāng)然可以被修改,自定義成別的端口號(hào)
全部填寫完點(diǎn)擊確定,就可以看到數(shù)據(jù)庫(kù)了。
我不在客戶現(xiàn)場(chǎng),連不上PostGreSQL的庫(kù),所以下面就不能截圖了。

在PGAdmin里,可以寫查詢語(yǔ)句,如果你有權(quán)限的話,可以看到返回的結(jié)果集。
我點(diǎn)開一個(gè)窗口,試著寫了一條查詢語(yǔ)句如下:
Select top 10 * from TableObj
執(zhí)行,發(fā)現(xiàn)結(jié)果集窗口提示語(yǔ)法錯(cuò)誤,問下群里的兄弟們,得知,正確的寫法應(yīng)該是這樣的:
Select * from TableObj limit 5
語(yǔ)法規(guī)則跟sql語(yǔ)句還是有區(qū)別的。
執(zhí)行,提示找不到對(duì)象“TableObj”找到TableObj的上一層容器“ContainerObj”,修改如下
SELECT* FROM ContainerObj.TableObj limit 5
點(diǎn)擊執(zhí)行,終于看到了結(jié)果集。
相對(duì)sqlserver來(lái)說(shuō),PGAdmin的結(jié)果集顯示界面表頭都有兩行,一行是字段名,一行是字段的數(shù)據(jù)類型。這點(diǎn)很有愛。
在PostGreSQL的查詢語(yǔ)句中,大小寫是不敏感的。
關(guān)于PostgreSql語(yǔ)法規(guī)則,在CSDN上找到了《PostgreSql語(yǔ)法詳細(xì)手冊(cè)》,不過(guò)這家伙要三個(gè)資源分。
好了看到PostGreSQL數(shù)據(jù)庫(kù)了,下面我要嘗試敲C#代碼測(cè)試去取PostGreSQL的數(shù)據(jù)。
C#連接PostGreSQL數(shù)據(jù)庫(kù)

有個(gè)東東,叫Npgsql,是PostgreSQL的一個(gè).NET數(shù)據(jù)提供程序。首先需要下載它,實(shí)際上我們只需要引用兩個(gè)dll:

經(jīng)過(guò)我的測(cè)試,如果只引用了Npgsql.dll,那么你的程序運(yùn)行起來(lái)之后會(huì)報(bào)錯(cuò),提示找不到對(duì)Mono.Security.dll引用的依賴項(xiàng)。
引用了這兩個(gè)dll,你還需要在你的代碼中加上using。
using Npgsql;
代碼就很簡(jiǎn)單了。
寫了個(gè)拼字符串的,比較二。txt什么什么的都是Winform的textbox

復(fù)制代碼 代碼如下:

///
/// 根據(jù)填寫的信息拼數(shù)據(jù)庫(kù)連接串
///
/// 數(shù)據(jù)庫(kù)連接串
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;
}

實(shí)際上數(shù)據(jù)庫(kù)連接串就是這么樣的一個(gè)格式
復(fù)制代碼 代碼如下:

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

///
/// 測(cè)試連接PostGreSQL數(shù)據(jù)庫(kù)
///
/// 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;
}

///
/// 測(cè)試獲取數(shù)據(jù)(使用要加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很簡(jiǎn)單,只為測(cè)試功能。下面截圖是之前在現(xiàn)場(chǎng)截的,處理了一下,隱去了一些信息。

相關(guān)文章

  • 如何使用C#將Tensorflow訓(xùn)練的.pb文件用在生產(chǎn)環(huán)境詳解

    如何使用C#將Tensorflow訓(xùn)練的.pb文件用在生產(chǎn)環(huán)境詳解

    這篇文章主要給大家介紹了關(guān)于如何使用C#將Tensorflow訓(xùn)練的.pb文件用在生產(chǎn)環(huán)境的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-11-11
  • C#中使用DevExpress中的ChartControl實(shí)現(xiàn)極坐標(biāo)圖的案例詳解

    C#中使用DevExpress中的ChartControl實(shí)現(xiàn)極坐標(biāo)圖的案例詳解

    這篇文章主要介紹了在C#中使用DevExpress中的ChartControl實(shí)現(xiàn)極坐標(biāo)圖,本案例是使用的是DevExpress 18.1.3版本,之前在14版本上也試過(guò),但是有一個(gè)弊端就是實(shí)現(xiàn)極坐標(biāo)圖的時(shí)候,第一個(gè)點(diǎn)和最后一個(gè)點(diǎn)總是自動(dòng)多一條閉合線,會(huì)形成一個(gè)閉合的多邊形,因此升級(jí)了一下版
    2022-02-02
  • C#隊(duì)列Queue多線程用法實(shí)例

    C#隊(duì)列Queue多線程用法實(shí)例

    這篇文章主要介紹了C#隊(duì)列Queue多線程用法,實(shí)例分析了隊(duì)列的相關(guān)使用技巧,需要的朋友可以參考下
    2015-05-05
  • C#基礎(chǔ)之委托用法實(shí)例教程

    C#基礎(chǔ)之委托用法實(shí)例教程

    這篇文章主要介紹了C#中委托的用法,包括委托的功能、定義及用法示例,需要的朋友可以參考下
    2014-09-09
  • C#線程倒計(jì)時(shí)器源碼分享

    C#線程倒計(jì)時(shí)器源碼分享

    這篇文章主要為大家分享了C#線程倒計(jì)時(shí)器源碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-01-01
  • C#實(shí)現(xiàn)TreeView節(jié)點(diǎn)拖拽的方法

    C#實(shí)現(xiàn)TreeView節(jié)點(diǎn)拖拽的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)TreeView節(jié)點(diǎn)拖拽的方法,涉及C#針對(duì)TreeView節(jié)點(diǎn)的動(dòng)態(tài)添加及移除技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-09-09
  • C#串口通信工具類的封裝

    C#串口通信工具類的封裝

    這篇文章主要為大家詳細(xì)介紹了C#串口通信工具類封裝,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • C#異步編程async/await用法詳解

    C#異步編程async/await用法詳解

    本文詳細(xì)講解了C#異步編程async/await的用法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • C# 3DES加密詳解

    C# 3DES加密詳解

    3Des對(duì)每個(gè)數(shù)據(jù)塊進(jìn)行了三次的DES加密算法,是DES的一個(gè)更安全的變形。比起最初的DES,3DES更為安全。下面我們來(lái)看下在C#中的3DES加密方式的使用
    2015-06-06
  • C# DataTable中查詢指定字段名稱的數(shù)據(jù)

    C# DataTable中查詢指定字段名稱的數(shù)據(jù)

    這篇文章主要介紹了C# DataTable中查詢指定字段名稱的數(shù)據(jù),本文直接給出實(shí)例代碼,簡(jiǎn)單易懂,需要的朋友可以參考下
    2015-06-06

最新評(píng)論