一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - C# - C# 操作PostgreSQL 數據庫的示例代碼

C# 操作PostgreSQL 數據庫的示例代碼

2022-02-10 15:19NET快速開發框架 C#

本篇文章主要介紹了C# 操作PostgreSQL 數據庫的示例代碼,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

什么是PostgreSQL?

PostgreSQL是一個功能強大的開源對象關系數據庫管理系統(ORDBMS)。 用于安全地存儲數據; 支持最佳做法,并允許在處理請求時檢索它們。

PostgreSQL(也稱為Post-gress-Q-L)由PostgreSQL全球開發集團(全球志愿者團隊)開發。 它不受任何公司或其他私人實體控制。 它是開源的,其源代碼是免費提供的。

PostgreSQL是跨平臺的,可以在許多操作系統上運行,如Linux,FreeBSD,OS X,Solaris和Microsoft Windows等。

PostgreSQL的特點如下

  1. PostgreSQL可在所有主要操作系統(即Linux,UNIX(AIX,BSD,HP-UX,SGI IRIX,Mac OS X,Solaris,Tru64)和Windows等)上運行。
  2. PostgreSQL支持文本,圖像,聲音和視頻,并包括用于C/C++,Java,Perl,Python,Ruby,Tcl和開放數據庫連接(ODBC)的編程接口。
  3. PostgreSQL支持SQL的許多功能,例如復雜SQL查詢,SQL子選擇,外鍵,觸發器,視圖,事務,多進程并發控制(MVCC),流式復制(9.0),熱備(9.0))。
  4. 在PostgreSQL中,表可以設置為從“父”表繼承其特征。
  5. 可以安裝多個擴展以向PostgreSQL添加附加功能。

PostgreSQL工具

有一些開放源碼以及付費工具可用作PostgreSQL的前端工具。 這里列出幾個被廣泛使用的工具:

1. psql:

它是一個命令行工具,也是管理PostgreSQL的主要工具。

pgAdmin是PostgreSQL的免費開源圖形用戶界面管理工具。

2. phpPgAdmin:

它是用PHP編寫的PostgreSQL的基于Web的管理工具。 它基于phpMyAdmin工具管理MySQL功能來開發。它可以用作PostgreSQL的前端工具。

3. pgFouine:

它是一個日志分析器,可以從PostgreSQL日志文件創建報告。 專有工具有 -
Lightning Admin for PostgreSQL, Borland Kylix, DBOne, DBTools Manager PgManager, Rekall, Data Architect, SyBase Power Designer, Microsoft Access, eRWin, DeZign for Databases, PGExplorer, Case Studio 2, pgEdit, RazorSQL, MicroOLAP Database Designer, Aqua Data Studio, Tuples, EMS Database Management Tools for PostgreSQL, Navicat, SQL Maestro Group products for PostgreSQL, Datanamic DataDiff for PostgreSQL, Datanamic SchemaDiff for PostgreSQL, DB MultiRun PostgreSQL Edition, SQLPro, SQL Image Viewer, SQL Data Sets 等等。

Npgsql

提供 .NET 操作postgreSQL數據庫的相關類。支持postgreSQL7.x 及以上版本。

自定義接口及操作類

接口類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
public interface IDBHelper
  {
    /// <summary>
    /// 執行 Transact-SQL 語句并返回受影響的行數。
    /// </summary>
    int ExecuteNonQuery(string connectionString, System.Data.CommandType cmdType, string cmdText, params System.Data.Common.DbParameter[] cmdParms);
 
    /// <summary>
    /// 在事務中執行 Transact-SQL 語句并返回受影響的行數。
    /// </summary>
    int ExecuteNonQuery(System.Data.Common.DbTransaction trans, System.Data.CommandType cmdType, string cmdText, params System.Data.Common.DbParameter[] cmdParms);
 
    /// <summary>
    /// 在事務中執行查詢,返回DataSet
    /// </summary>
    DataSet ExecuteQuery(System.Data.Common.DbTransaction trans, System.Data.CommandType cmdType, string cmdText, params System.Data.Common.DbParameter[] cmdParms);
 
    /// <summary>
    /// 執行查詢,返回DataSet
    /// </summary>
    DataSet ExecuteQuery(string connectionString, System.Data.CommandType cmdType, string cmdText, params System.Data.Common.DbParameter[] cmdParms);
 
    /// <summary>
    /// 在事務中執行查詢,返回DataReader
    /// </summary>
    DbDataReader ExecuteReader(System.Data.Common.DbTransaction trans, System.Data.CommandType cmdType, string cmdText, params System.Data.Common.DbParameter[] cmdParms);
 
    /// <summary>
    /// 執行查詢,返回DataReader
    /// </summary>
    DbDataReader ExecuteReader(string connectionString, System.Data.CommandType cmdType, string cmdText, params System.Data.Common.DbParameter[] cmdParms);
 
    /// <summary>
    /// 在事務中執行查詢,并返回查詢所返回的結果集中第一行的第一列。忽略其他列或行。
    /// </summary>
    object ExecuteScalar(System.Data.Common.DbTransaction trans, System.Data.CommandType cmdType, string cmdText, params System.Data.Common.DbParameter[] cmdParms);
 
    /// <summary>
    /// 執行查詢,并返回查詢所返回的結果集中第一行的第一列。忽略其他列或行。
    /// </summary>
    object ExecuteScalar(string connectionString, System.Data.CommandType cmdType, string cmdText, params System.Data.Common.DbParameter[] cmdParms);
 
    /// <summary>
    /// 得到數據條數
    /// </summary>
    /// <param name="tblName">表名</param>
    /// <param name="condition">條件(不需要where)</param>
    /// <returns>數據條數</returns>
    int GetCount(string connectionString, string tblName, string condition);
  }

操作類

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
/// <summary>
  /// 數據庫操作基類(for PostgreSQL)
  /// </summary>
  public class PostgreHelper : IDBHelper
  {
    /// <summary>
    /// 得到數據條數
    /// </summary>
    public int GetCount(string connectionString, string tblName, string condition)
    {
      StringBuilder sql = new StringBuilder("select count(*) from " + tblName);
      if (!string.IsNullOrEmpty(condition))
        sql.Append(" where " + condition);
 
      object count = ExecuteScalar(connectionString, CommandType.Text, sql.ToString(), null);
      return int.Parse(count.ToString());
    }
 
    /// <summary>
    /// 執行查詢,返回DataSet
    /// </summary>
    public DataSet ExecuteQuery(string connectionString, CommandType cmdType, string cmdText,
      params DbParameter[] cmdParms)
    {
      using (NpgsqlConnection conn = new NpgsqlConnection(connectionString))
      {
        using (NpgsqlCommand cmd = new NpgsqlCommand())
        {
          PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
          using (NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd))
          {
            DataSet ds = new DataSet();
            da.Fill(ds, "ds");
            cmd.Parameters.Clear();
            return ds;
          }
        }
      }
    }
 
    /// <summary>
    /// 在事務中執行查詢,返回DataSet
    /// </summary>
    public DataSet ExecuteQuery(DbTransaction trans, CommandType cmdType, string cmdText,
      params DbParameter[] cmdParms)
    {
      NpgsqlCommand cmd = new NpgsqlCommand();
      PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, cmdParms);
      NpgsqlDataAdapter da = new NpgsqlDataAdapter(cmd);
      DataSet ds = new DataSet();
      da.Fill(ds, "ds");
      cmd.Parameters.Clear();
      return ds;
    }
 
    /// <summary>
    /// 執行 Transact-SQL 語句并返回受影響的行數。
    /// </summary>
    public int ExecuteNonQuery(string connectionString, CommandType cmdType, string cmdText,
      params DbParameter[] cmdParms)
    {
      NpgsqlCommand cmd = new NpgsqlCommand();
 
      using (NpgsqlConnection conn = new NpgsqlConnection(connectionString))
      {
        PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
        int val = cmd.ExecuteNonQuery();
        cmd.Parameters.Clear();
        return val;
      }
    }
 
    /// <summary>
    /// 在事務中執行 Transact-SQL 語句并返回受影響的行數。
    /// </summary>
    public int ExecuteNonQuery(DbTransaction trans, CommandType cmdType, string cmdText,
      params DbParameter[] cmdParms)
    {
      NpgsqlCommand cmd = new NpgsqlCommand();
      PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, cmdParms);
      int val = cmd.ExecuteNonQuery();
      cmd.Parameters.Clear();
      return val;
    }
 
    /// <summary>
    /// 執行查詢,返回DataReader
    /// </summary>
    public DbDataReader ExecuteReader(string connectionString, CommandType cmdType, string cmdText,
      params DbParameter[] cmdParms)
    {
      NpgsqlCommand cmd = new NpgsqlCommand();
      NpgsqlConnection conn = new NpgsqlConnection(connectionString);
 
      try
      {
        PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms);
        NpgsqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
        cmd.Parameters.Clear();
        return rdr;
      }
      catch
      {
        conn.Close();
        throw;
      }
    }
 
    /// <summary>
    /// 在事務中執行查詢,返回DataReader
    /// </summary>
    public DbDataReader ExecuteReader(DbTransaction trans, CommandType cmdType, string cmdText,
      params DbParameter[] cmdParms)
    {
      NpgsqlCommand cmd = new NpgsqlCommand();
      PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, cmdParms);
      NpgsqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection);
      cmd.Parameters.Clear();
      return rdr;
    }
 
    /// <summary>
    /// 執行查詢,并返回查詢所返回的結果集中第一行的第一列。忽略其他列或行。
    /// </summary>
    public object ExecuteScalar(string connectionString, CommandType cmdType, string cmdText,
      params DbParameter[] cmdParms)
    {
      NpgsqlCommand cmd = new NpgsqlCommand();
 
      using (NpgsqlConnection connection = new NpgsqlConnection(connectionString))
      {
        PrepareCommand(cmd, connection, null, cmdType, cmdText, cmdParms);
        object val = cmd.ExecuteScalar();
        cmd.Parameters.Clear();
        return val;
      }
    }
 
    /// <summary>
    /// 在事務中執行查詢,并返回查詢所返回的結果集中第一行的第一列。忽略其他列或行。
    /// </summary>
    public object ExecuteScalar(DbTransaction trans, CommandType cmdType, string cmdText,
      params DbParameter[] cmdParms)
    {
      NpgsqlCommand cmd = new NpgsqlCommand();
      PrepareCommand(cmd, trans.Connection, trans, cmdType, cmdText, cmdParms);
      object val = cmd.ExecuteScalar();
      cmd.Parameters.Clear();
      return val;
    }
 
    /// <summary>
    /// 生成要執行的命令
    /// </summary>
    /// <remarks>參數的格式:冒號+參數名</remarks>
    private static void PrepareCommand(DbCommand cmd, DbConnection conn, DbTransaction trans, CommandType cmdType,
      string cmdText, DbParameter[] cmdParms)
    {
      if (conn.State != ConnectionState.Open)
        conn.Open();
 
      cmd.Connection = conn;
      cmd.CommandText = cmdText.Replace("@", ":").Replace("?", ":").Replace("[", "\"").Replace("]", "\"");
 
      if (trans != null)
        cmd.Transaction = trans;
 
      cmd.CommandType = cmdType;
 
      if (cmdParms != null)
      {
        foreach (NpgsqlParameter parm in cmdParms)
        {
          parm.ParameterName = parm.ParameterName.Replace("@", ":").Replace("?",":");
 
          cmd.Parameters.Add(parm);
        }
      }
    }
  }

數據庫操作實例

寫入實例:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
IDBHelper dbHelper = new PostgreHelper();
string connectionString = "User ID=postgres;Password=admin;Server=192.168.0.226;Port=5432;Database=MonitorDB;";
string sql = "insert into [RawLog]([ProjectID],[File],[Note]) values('項目編號',@file,'備注')";
 
string file = this.textBox1.Text;
if (!File.Exists(file)) return;
 
//獲取文件二進制流
System.IO.FileStream fs = new System.IO.FileStream(file, System.IO.FileMode.Open);
BinaryReader br = new BinaryReader(fs);
byte[] b = br.ReadBytes((int)fs.Length);
br.Close();fs.Close();
 
int r = dbHelper.ExecuteNonQuery(connectionString, CommandType.Text,sql,new Npgsql.NpgsqlParameter("@file",raw_log.File));

注意:

1.查詢語句中表名、字段名需用中括號[ ] 封起來,在操作類中會統一替換為雙引號。
2.命令語句中的參數名格式為:@或?+ 參數名,在操作類中為統一替換為冒號。
3.對于二進制流、日期等特殊類型需采用2中的參數形式
4.經多次測試postgreSQL數據庫只直接支持(冒號+參數名)的參數方式

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持服務器之家。

原文鏈接:http://www.jianshu.com/p/0e6a92ccb60b

延伸 · 閱讀

精彩推薦
  • C#C#裁剪,縮放,清晰度,水印處理操作示例

    C#裁剪,縮放,清晰度,水印處理操作示例

    這篇文章主要為大家詳細介紹了C#裁剪,縮放,清晰度,水印處理操作示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    吳 劍8332021-12-08
  • C#C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    C# 實現對PPT文檔加密、解密及重置密碼的操作方法

    這篇文章主要介紹了C# 實現對PPT文檔加密、解密及重置密碼的操作方法,非常不錯,具有參考借鑒價值,需要的朋友可以參考下...

    E-iceblue5012022-02-12
  • C#WPF 自定義雷達圖開發實例教程

    WPF 自定義雷達圖開發實例教程

    這篇文章主要介紹了WPF 自定義雷達圖開發實例教程,本文介紹的非常詳細,具有參考借鑒價值,需要的朋友可以參考下...

    WinterFish13112021-12-06
  • C#Unity3D實現虛擬按鈕控制人物移動效果

    Unity3D實現虛擬按鈕控制人物移動效果

    這篇文章主要為大家詳細介紹了Unity3D實現虛擬按鈕控制人物移動效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一...

    shenqingyu060520232410972022-03-11
  • C#深入解析C#中的交錯數組與隱式類型的數組

    深入解析C#中的交錯數組與隱式類型的數組

    這篇文章主要介紹了深入解析C#中的交錯數組與隱式類型的數組,隱式類型的數組通常與匿名類型以及對象初始值設定項和集合初始值設定項一起使用,需要的...

    C#教程網6172021-11-09
  • C#C#實現XML文件讀取

    C#實現XML文件讀取

    這篇文章主要為大家詳細介紹了C#實現XML文件讀取的相關代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    Just_for_Myself6702022-02-22
  • C#C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題實例

    這篇文章主要介紹了C#設計模式之Visitor訪問者模式解決長隆歡樂世界問題,簡單描述了訪問者模式的定義并結合具體實例形式分析了C#使用訪問者模式解決長...

    GhostRider9502022-01-21
  • C#C#通過KD樹進行距離最近點的查找

    C#通過KD樹進行距離最近點的查找

    這篇文章主要為大家詳細介紹了C#通過KD樹進行距離最近點的查找,具有一定的參考價值,感興趣的小伙伴們可以參考一下...

    帆帆帆6112022-01-22
主站蜘蛛池模板: 99视频九九精品视频在线观看 | 干露露视频 性感写真 | 99re在线视频免费观看 | 91短视频破解版 | a亚洲天堂 | 91久久99热青草国产 | 俄罗斯毛片免费大全 | 美女插插视频 | 色天天综合色天天碰 | 极品美女写真菠萝蜜视频 | 国产九九视频在线观看 | 亚洲高清在线天堂精品 | 亚洲第一网色综合久久 | 亚州男人的天堂 | 午夜福利试看120秒体验区 | 干美女视频| 国产午夜大片 | 日产免费自线一二区 | 99超级碰碰成人香蕉网 | 久久se精品一区二区国产 | 娇妻与老头绿文小说系列 | 交换年轻夫妇HD中文字幕 | 国产成人久视频免费 | 男女交性特一级 | 国产精品久久久免费视频 | 三上悠亚国产精品一区 | 亚洲精品一二区 | japaneseles女同专区 | 久久久久久免费观看 | 免费网站国产 | 欧美成人aa久久狼窝动画 | yy111111免费观看 | 东北疯狂xxxxbbbb中国 | 欧美日韩中文字幕在线视频 | 亚洲欧美另类在线观看 | 日本护士xxxx视频免费 | 九九99热久久精品在线6 | 国产精品主播在线 | 韩国美女主播在线 | 婷婷丁香视频 | 精品亚洲午夜久久久久 |