前言
應用程序集成數據庫是許多軟件項目的關鍵方面。無論構建的是Web應用程序、桌面應用程序還是移動應用程序,高效無縫地與數據庫集成,對于存儲、檢索和操作數據都至關重要。本文將介紹數據庫與C#應用程序集成的幾種方法與使用注意事項。
數據庫
開發應用程序時,我們會為應用選擇使用的數據庫,這是至關重要的一步。通常會根據實際情況考慮一些因素,如可擴展性、性能、數據結構、復雜性和預算等。以下也是一些常用選項:
1、關系數據庫
SQL Server: 微軟提供的功能豐富的關系數據庫管理系統。MySQL、PostgreSQL、Oracle、Informix等: 使用廣泛且具有強大的社區支持的關系數據庫。
2、非關系數據庫(NoSQL)
Redis: 一個高性能的內存數據存儲,用于緩存和實時分析。MongoDB: 一個流行的面向文檔的NoSQL數據庫。Memcached: 一種開源的高性能分布式內存對象緩存系統。
3、關系映射框架
Entity Framework Core: 由微軟開發的輕量級 ORM 框架。SqlSugar:一款 .NET 開源ORM框架。Chloe: 一款 .NET 輕量級的 ORM 框架。
方法簡介
1、ADO.NET
ADO.NET 是NET框架中,用于訪問關系數據庫中數據的組件。它提供了一套豐富的功能,可直接使用 SQL 命令處理數據庫交互。它提供了對數據庫交互的低級控制,可能很冗長并且容易出錯。以下是連接到SQL Server數據庫的簡單示例:using Microsoft.Data.SqlClient;
using System.Xml;
namespace Fountain.WinConsole.OtherDemo
{
internal class Program
{
static void Main(string[] args)
{
// 創建 Connection 對象
using (SqlConnection sqlConnection = new SqlConnection())
{
// 通過 ConnectionString 屬性連接數據庫
sqlConnection.ConnectionString = "server=127.0.0.1,1433;Enlist=true;Pooling=true; uid=sa;pwd=sa123456;connection Timeout=30;database=CRMS;Max Pool Size=600";
// 創建一個 SqlCommand 對象
SqlCommand sqlCommand = sqlConnection.CreateCommand();
// 命令的類型為Text
sqlCommand.CommandType = System.Data.CommandType.Text;
// 執行命令SQL語句
sqlCommand.CommandText = "select * from user";
// 執行命令返回 DataReader
SqlDataReader sqlDataReader = sqlCommand.ExecuteReader();
// 輸出標題
Console.WriteLine($"|{"編號",-20}|{"名稱",20}|");
while (sqlDataReader.Read())
{
// 輸出行結果
Console.WriteLine($"|{sqlDataReader["Code"],-20}|{sqlDataReader["Name"],20}|");
}
}
}
}
}
2、Entity Framework Core
Entity Framework Core 是輕量化、可擴展、開源和跨平臺的常用 Entity Framework 數據訪問技術。它允許我們使用特定的對象和LINQ查詢來處理數據庫,無需編寫原始SQL查詢。以下是使用 EF Core 的示例:using Microsoft.EntityFrameworkCore;
using System.Xml;
namespace Fountain.WinConsole.OtherDemo
{
internal class Program
{
static void Main(string[] args)
{
using (var context = new UserDbContext())
{
var entity = new UserEntity { Name = "admin" };
context.UserEntities.Add(entity);
context.SaveChanges();
}
}
}
/// <summary>
/// 用戶實體
/// </summary>
public class UserEntity
{
/// <summary>
/// 編碼
/// </summary>
public int Code { get; set; }
/// <summary>
/// 名稱
/// </summary>
public string Name { get; set; }=string.Empty;
}
/// <summary>
///
/// </summary>
public class UserDbContext : DbContext
{
public DbSet<UserEntity> UserEntities { get; set; }
/// <summary>
///
/// </summary>
/// <param name="options"></param>
protected override void OnConfiguring(DbContextOptionsBuilder options)
{
string connectionString = "Server=127.0.0.1;Database=CRMS;User Id=sa;Password=sa123456;";
options.UseSqlServer(connectionString);
}
}
}
3、Dapper
Dapper 是一個專注于原始性能、簡單易用、輕量級的ORM框架。它提供了擴展方法 IDbConnection,將數據庫查詢映射到對象或動態類型。Dapper 需要手動編寫SQL語句,提供了更好的性能。以下是使用Dapper的示例:using Dapper;
using System;
using System.Data;
using System.Data.SqlClient;
namespace Fountain.WinConsole.OtherDemo
{
internal class Program
{
static void Main(string[] args)
{
string connectionString = "Server=127.0.0.1;Database=CRMS;User Id=sa;Password=pwd123456;";
using (IDbConnection connection = new SqlConnection(connectionString))
{
var result = connection.Query<UserEntity>("select * from user");
foreach (var entity in result)
{
Console.WriteLine($"{entity.Code}, {entity.Name}");
}
}
}
}
/// <summary>
/// 用戶實體
/// </summary>
public class UserEntity
{
/// <summary>
/// 編碼
/// </summary>
public int Code { get; set; }
/// <summary>
/// 名稱
/// </summary>
public string Name { get; set; }
}
}
4、SqlSugar
SqlSugar 是一款非常輕量級并且特別強大的ORM,支持常見的關系型數據庫如 SQL Server、Oracle、MySQL等。擁有媲美原生的性能且能滿足各種需求的功能,簡單易用。以下是使用 SqlSugar 的示例:using SqlSugar;
using System.Data;
using System.Xml;
using static System.Net.Mime.MediaTypeNames;
namespace Fountain.WinConsole.OtherDemo
{
internal class Program
{
static void Main(string[] args)
{
//數據庫鏈接
var db = new SqlSugarClient(new ConnectionConfig()
{
ConnectionString = "Server=127.0.0.1;Database=CRMS;User Id=sa;Password=sa123456;",
//指定數據庫類型
DbType = SqlSugar.DbType.SqlServer,
//鏈接使用完后是否自動釋放
IsAutoCloseConnection = true,
});
// 獲取
UserEntity userEntity= db.Queryable<UserEntity>().First();
// 輸出
Console.WriteLine($"{userEntity.Code}, {userEntity.Name}");
// 按任意鍵推出
Console.ReadLine();
}
}
/// <summary>
/// 用戶實體
/// </summary>
public class UserEntity
{
/// <summary>
/// 編碼
/// </summary>
public int Code { get; set; }
/// <summary>
/// 名稱
/// </summary>
public string Name { get; set; }=string.Empty;
}
}
使用事項
無論我們選擇哪種方法,在使用時都須考慮以下一些行為規范:1、參數化查詢:始終使用參數化查詢來防止SQL注入攻擊。3、錯誤處理:實施適當的錯誤處理和日志記錄,以處理與數據庫相關的異常。5、安全性:應用適當的安全措施,如加密和訪問控制來保護敏感數據。
小結
以上是對應用程序與數據庫集成的簡單介紹,了解權衡和最佳實踐對于成功集成至關重要。通過選擇正確的數據庫和集成策略,您可以確保高效的數據管理,并提高C#應用程序的整體性能。
該文章在 2024/6/12 9:17:31 編輯過