麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C# > 正文

C#訪問PostGreSQL數據庫的方法

2020-01-24 03:27:47
字體:
來源:轉載
供稿:網友

我對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很簡單,只為測試功能。下面截圖是之前在現場截的,處理了一下,隱去了一些信息。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 国产免费v片 | 福利在线影院 | 欧美 亚洲 激情 | 污视频在线免费播放 | 国产毛片毛片 | 极色品影院 | 国产一区二区在线免费播放 | 久久精品操 | 国产精品www | 在线2区| av免费在线观看av | 免费观看黄色一级视频 | 久草视频在线资源 | 高清在线观看av | 爱射av | 国产精品视频在线观看免费 | 国产精品免费大片 | 九九精品在线 | 欧美一级黄色免费看 | 国产日本在线 | 黄色va视频 | 在线播放黄色网址 | 久久久久久久久久久高潮一区二区 | 日韩视频一区二区三区四区 | 中文字幕天堂在线 | 在线看免费观看日本 | 毛片一区二区三区 | 国产精品久久久久久久午夜片 | 一区二区三区黄色 | 国产人妖一区二区 | 成人三级电影网址 | 激情视频免费看 | 国产精品久久久久一区二区 | av在线免费网 | 久久国产精品久久久久久久久久 | 99re66热这里只有精品8 | 最新中文字幕第一页视频 | 日本一道aⅴ不卡免费播放 久久久久久久高清 | 免费a级网站 | 久久精品视频黄色 | 日本看片一区二区三区高清 |