C#實戰(zhàn):Dapper操作PostgreSQL筆記
PostgreSQL是一個功能非常強(qiáng)大的、源代碼開放的客戶/服務(wù)器關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS)
PostgreSQL組成
數(shù)據(jù)庫引擎:PostgreSQL數(shù)據(jù)庫引擎是一組CLI和命令行工具,用于管理和查詢數(shù)據(jù)庫。它使用C語言編寫,并提供了許多高級功能,例如復(fù)制,分區(qū),事務(wù),視圖和索引等。
數(shù)據(jù)庫存儲引擎:PostgreSQL的存儲引擎是一組用于存儲和檢索數(shù)據(jù)的API。它們負(fù)責(zé)管理數(shù)據(jù)的物理存儲,并與操作系統(tǒng)和文件系統(tǒng)交互。PostgreSQL支持多種存儲引擎,例如Btree,Hash,GIS和qtree等。
數(shù)據(jù)庫管理器:PostgreSQL數(shù)據(jù)庫管理器是一個用戶界面工具,可以通過命令行或圖形用戶界面(GUI)進(jìn)行訪問。它提供了許多功能,例如創(chuàng)建,修改和刪除數(shù)據(jù)庫,創(chuàng)建和管理表和索引,備份和恢復(fù)數(shù)據(jù)庫,檢查和修復(fù)錯誤等。
插件和擴(kuò)展:PostgreSQL提供了許多插件和擴(kuò)展,用于擴(kuò)展其功能和用途。這些插件和擴(kuò)展可以用于各種目的,例如提高性能,管理用戶身份驗證,連接到外部資源等。
PostgreSQL的主要優(yōu)點
可靠性:PostgreSQL是一個高可靠性的數(shù)據(jù)庫系統(tǒng),具有多種容錯和故障恢復(fù)機(jī)制。
可擴(kuò)展性:PostgreSQL可以輕松地擴(kuò)展,可以在一個或多個節(jié)點上運行,并使用分區(qū)和復(fù)制技術(shù)來水平擴(kuò)展。
性能:PostgreSQL在多個方面提供了高性能,例如使用行級鎖定,分區(qū)表和分區(qū)索引等技術(shù)來優(yōu)化查詢性能。
安全性:PostgreSQL提供了多種安全措施,例如用戶身份驗證,數(shù)據(jù)加密和備份,以確保數(shù)據(jù)安全。
社區(qū)支持:PostgreSQL擁有龐大的開發(fā)和用戶社區(qū),可以提供豐富的文檔,支持和資源。
社區(qū)官網(wǎng):http://www.postgres.cn/index.php/v2/home
PostgreSQL的使用場景
數(shù)據(jù)庫應(yīng)用程序:PostgreSQL可用于構(gòu)建各種類型的數(shù)據(jù)庫應(yīng)用程序,例如企業(yè)應(yīng)用程序,電子商務(wù)應(yīng)用程序和金融應(yīng)用程序等。
電子商務(wù):PostgreSQL是許多電子商務(wù)網(wǎng)站的首選數(shù)據(jù)庫,例如Amazon和eBay。
門戶網(wǎng)站:PostgreSQL可用于構(gòu)建門戶網(wǎng)站,例如Wikipedia和Google。
游戲:PostgreSQL可用于構(gòu)建游戲服務(wù)器,例如World of Warcraft和Counter-Strike: Global Offensive。
科學(xué)計算:PostgreSQL是許多科學(xué)計算應(yīng)用程序的首選數(shù)據(jù)庫,例如Apache Spark和TensorFlow。
媒體和娛樂:PostgreSQL可用于構(gòu)建媒體和娛樂應(yīng)用程序,例如Netflix和Hulu。
金融服務(wù):PostgreSQL是許多金融服務(wù)應(yīng)用程序的首選數(shù)據(jù)庫,例如ING Direct和Capital One 360。
其他應(yīng)用程序:PostgreSQL適用于各種應(yīng)用程序和場景,例如醫(yī)療保健,物流,教育和政府等。
示例
今天給大家分享通過Dapper來操作PostgreSQL數(shù)據(jù)庫。
首先新建一個控制臺項目,開發(fā)框架是NetFrameWork v4.5.2
1、安裝dapper,目前本案例安裝的版本是1.50.2
2、安裝PostgreSQL驅(qū)動
nuget直接搜索 npgsql 這里安裝的版本是4.0.0
3、數(shù)據(jù)庫鏈接示例
建議大家寫在配置文件里面,這里只做演示使用
public string GetConnectioning(string servername, string uid, string pwd, string db, string port)
{
return string.Format("host={0};User ID={1};password={2};database={3};port={4};pooling=false;", servername, uid, pwd, db, port);
}
4、通過SQL查詢數(shù)據(jù)列表寫法
public List GetList(string conStr, string sql)
{
using (NpgsqlConnection connection = new NpgsqlConnection(conStr))
{
var list = connection.Query(sql).ToList();
return list;
}
}
5、插入示例寫法
public int Insert(string conStr)
{
int result = 0;
try
{
using (NpgsqlConnection connection = new NpgsqlConnection(conStr))
{
var sql = "insert into t_user(name, age, address, hobby) values(@a1, @b1, @c1, @d1), (@a2, @b2, @c2, @d2)";
DynamicParameters dynamicParameters = new DynamicParameters();
dynamicParameters.Add("a1", "value");
dynamicParameters.Add("b1", "value");
dynamicParameters.Add("c1", "value");
dynamicParameters.Add("d1", "value");
dynamicParameters.Add("a2", "value");
dynamicParameters.Add("b2", "value");
dynamicParameters.Add("c2", "value");
dynamicParameters.Add("d2", "value");
result = connection.ExecuteScalar(sql, dynamicParameters);
}
}
catch
{
}
return result;
}