亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

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

2019-10-29 21:09:06
字體:
來源:轉載
供稿:網友

什么是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 及以上版本。

自定義接口及操作類

接口類

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);  }

操作類

/// <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);        }      }    }  }

數據庫操作實例

寫入實例:

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數據庫只直接支持(冒號+參數名)的參數方式

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情一二三| 国产91色在线播放| 亚洲激情视频在线播放| 国产亚洲精品久久久| 亚洲黄色av女优在线观看| 国产不卡精品视男人的天堂| 久久99亚洲精品| 国产99久久久欧美黑人| 中文字幕亚洲一区二区三区五十路| 国产色综合天天综合网| 亚洲成人xxx| 国内揄拍国内精品少妇国语| 国产精品亚洲第一区| 欧美最猛性xxxxx免费| 色婷婷久久av| 欧美尺度大的性做爰视频| 成人xvideos免费视频| 国产日韩av在线| 午夜精品在线观看| 成人黄色片在线| 日韩免费在线免费观看| 亚洲人成电影网站色| 国产日韩欧美91| 国产精品中文字幕久久久| 俺去亚洲欧洲欧美日韩| 久久久国产一区二区| 97在线精品国自产拍中文| 国内伊人久久久久久网站视频| 一区国产精品视频| 成人免费在线视频网站| 精品中文字幕在线| 久久国产色av| 欧美成人午夜视频| 欧美成人自拍视频| 久久香蕉国产线看观看网| 日韩av在线电影网| 国产亚洲一区二区精品| 亚洲人成毛片在线播放| 性亚洲最疯狂xxxx高清| 91沈先生作品| 不卡在线观看电视剧完整版| 亚洲www在线观看| 97人人做人人爱| 国产精品成人av在线| 伊人久久大香线蕉av一区二区| 亚洲国产精品网站| 韩国日本不卡在线| 亚洲国产又黄又爽女人高潮的| 97免费在线视频| 色偷偷偷综合中文字幕;dd| 国产精品激情自拍| 亚洲免费视频网站| 亚洲电影免费观看高清| 欧美成人黑人xx视频免费观看| 欧美日韩国产影院| 欧美二区在线播放| 国产精品视频在线播放| 亚洲人成伊人成综合网久久久| 日本不卡高字幕在线2019| 91成品人片a无限观看| 97福利一区二区| 欧美大片欧美激情性色a∨久久| 疯狂蹂躏欧美一区二区精品| 一区二区三区视频免费| 久久久久久久网站| 亚洲视频777| 日韩在线中文字| 一本色道久久综合狠狠躁篇的优点| 中文字幕久久精品| 欧美激情一级精品国产| 国产精品亚洲欧美导航| 久久久久久久久中文字幕| 欧美极品少妇xxxxⅹ免费视频| 国产精品69精品一区二区三区| 国产小视频国产精品| 国模精品视频一区二区三区| 97精品一区二区三区| 日韩在线观看电影| 国产欧美韩国高清| 亚洲性线免费观看视频成熟| 国产999视频| 欧美久久精品一级黑人c片| 久久久久久亚洲精品中文字幕| 精品高清一区二区三区| 亚洲欧美中文日韩v在线观看| 国产精品一区二区三区成人| 永久免费毛片在线播放不卡| 在线亚洲男人天堂| 亚洲男人第一av网站| 精品福利在线视频| 一本色道久久88综合亚洲精品ⅰ| 成人xxxx视频| 热99久久精品| 高跟丝袜欧美一区| 欧美亚洲另类视频| 国产成人精品一区二区| 91精品国产综合久久香蕉最新版| 久久亚洲欧美日韩精品专区| 色樱桃影院亚洲精品影院| 欧美精品videofree1080p| 国产精品亚洲综合天堂夜夜| 亚洲码在线观看| 中文字幕国产日韩| 国产成人亚洲综合91精品| 91国产精品电影| 国产男人精品视频| 欧美极品少妇xxxxⅹ裸体艺术| 久久午夜a级毛片| 影音先锋欧美精品| 亚洲福利小视频| 久久亚洲一区二区三区四区五区高| 综合网日日天干夜夜久久| 成人精品在线观看| 久久国内精品一国内精品| 国产va免费精品高清在线| 日韩av一区在线观看| 国产精品亚洲激情| 92看片淫黄大片欧美看国产片| 日韩精品视频在线| 最近2019年手机中文字幕| 欧美日韩成人在线播放| 91中文在线视频| zzjj国产精品一区二区| 日韩国产欧美区| 欧美片一区二区三区| 国产成人+综合亚洲+天堂| 欧美日韩一区二区三区在线免费观看| 久久国产精品电影| 精品亚洲va在线va天堂资源站| 亚洲系列中文字幕| 国产精品h在线观看| 国语自产精品视频在免费| 欧美有码在线观看视频| 另类色图亚洲色图| 日本一区二区在线播放| 欧美猛男性生活免费| 国产91在线播放九色快色| 欧美成人全部免费| 欧美精品中文字幕一区| 日韩小视频在线观看| 久久久久国产视频| 成人激情春色网| 日韩精品中文字幕在线| 欧美激情一级精品国产| 日韩av123| 亚洲一区亚洲二区| 一本大道香蕉久在线播放29| 久久国产天堂福利天堂| 庆余年2免费日韩剧观看大牛| 日韩一区二区三区xxxx| 精品人伦一区二区三区蜜桃网站| 国产精品久久久久久久久| 成人写真视频福利网| 91久久精品美女高潮| 亚洲天堂男人天堂女人天堂| 92国产精品视频| 国产精品视频网站| 久久久免费观看| 成人疯狂猛交xxx| 欧美一级高清免费| 2019中文字幕全在线观看| 欧美视频在线观看免费网址| 久久久久久com| 国产一区二区丝袜|