The name 'DBHelp' does not exist in the current context
`DBHelp` **不是 .NET 框架內建類別**,而是開發者/團隊/網路教程自行封裝的**資料庫操作輔助類** (Helper/Utility)。常見來源:
| 情況 | 操作步驟 |
|---|---|
| 專案已有 DLL | 右鍵專案 → Add Reference → Browse 選中 `Common.dll` / `DataAccess.dll` 等 → 確定。 頂部 `using Common.Data;` (視命名空間而定)。 |
| 網路複製代碼 | 在專案新建 `DBHelper.cs`,貼上完整代碼,修正命名空間為當前專案。 確保引用 `System.Data`、`System.Data.SqlClient` / `Microsoft.Data.SqlClient`。 |
| 使用成熟 ORM | NuGet 安裝 `Dapper` / `SqlSugar` / `FreeSql` / `EntityFrameworkCore`。 直接使用其 API,無需自寫 Helper。 |
using System;
using System.Data;
using System.Data.SqlClient; // 或 Microsoft.Data.SqlClient
using System.Collections.Generic;
public static class DBHelper {
static readonly string ConnStr = "Server=.;Database=TestDB;Uid=sa;Pwd=123;TrustServerCertificate=True;";
// 執行非查詢 (增刪改)
public static int ExecuteNonQuery(string sql, params SqlParameter[] parameters) {
using (var conn = new SqlConnection(ConnStr))
using (var cmd = new SqlCommand(sql, conn)) {
if (parameters != null) cmd.Parameters.AddRange(parameters);
conn.Open();
return cmd.ExecuteNonQuery();
}
}
// 執行標量查詢 (單值)
public static object ExecuteScalar(string sql, params SqlParameter[] parameters) {
using (var conn = new SqlConnection(ConnStr))
using (var cmd = new SqlCommand(sql, conn)) {
if (parameters != null) cmd.Parameters.AddRange(parameters);
conn.Open();
return cmd.ExecuteScalar();
}
}
// 執行讀取器 (流式讀取)
public static SqlDataReader ExecuteReader(string sql, params SqlParameter[] parameters) {
var conn = new SqlConnection(ConnStr); // 注意:連接由調用者負責關閉
var cmd = new SqlCommand(sql, conn);
if (parameters != null) cmd.Parameters.AddRange(parameters);
conn.Open();
// CommandBehavior.CloseConnection: 讀取器關閉時自動關閉連接
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
// 填充 DataTable (小數據量)
public static DataTable GetDataTable(string sql, params SqlParameter[] parameters) {
using (var conn = new SqlConnection(ConnStr))
using (var adapter = new SqlDataAdapter(sql, conn)) {
if (parameters != null) adapter.SelectCommand.Parameters.AddRange(parameters);
var dt = new DataTable();
adapter.Fill(dt);
return dt;
}
}
}
// 參數化查詢防注入
var dt = DBHelper.GetDataTable("SELECT * FROM Users WHERE Age > @age", new SqlParameter("@age", 18));
foreach (DataRow row in dt.Rows) Console.WriteLine(row["Username"]);
// 執行更新
int rows = DBHelper.ExecuteNonQuery("UPDATE Users SET LastLogin=GETDATE() WHERE UserID=@id", new SqlParameter("@id", 1001));
// 讀取器模式 (大數據量)
using (var reader = DBHelper.ExecuteReader("SELECT * FROM Logs")) {
while (reader.Read()) { /* 處理 */ }
}