首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

ADO.NET 資料庫連線與 SQL 操作實戰範例:DataSource 封裝類別完整實作

     編輯:關於.NET

DataSource 封裝類別設計

將 ADO.NET 核心物件封裝於 DataSource 類別,集中管理連線字串、連線、命令、適配器、資料集與讀取器:

using System.Data;
using System.Data.SqlClient;
using System.Configuration;

public class DataSource {
    private string connString;
    private SqlConnection sqlConn;
    private SqlCommand sqlCmd;
    private SqlDataAdapter sqlAdapter;
    private DataSet ds;
    private SqlDataReader sqlReader;

    public DataSource() {
        connString = ConfigurationManager.ConnectionStrings["MyDB"].ConnectionString;
        sqlConn = new SqlConnection(connString);
        sqlCmd = new SqlCommand();
        sqlAdapter = new SqlDataAdapter();
        ds = new DataSet();
    }
    // ... 方法實作
}

核心查詢方法

1. 參數化查詢回傳 DataSet (離線資料表)

public DataSet GetDataSet(string queryString) {
    sqlAdapter.SelectCommand = new SqlCommand(queryString, sqlConn);
    sqlAdapter.Fill(ds, "TempTable");
    return ds;
}

2. 無參數預設查詢

public DataSet GetDataSet() {
    sqlAdapter.SelectCommand = new SqlCommand("SELECT * FROM abc", sqlConn);
    sqlAdapter.Fill(ds, "TempTable");
    return ds;
}

3. 唯讀資料流 SqlDataReader (高效能、須保持連線)

public SqlDataReader GetReader() {
    sqlCmd.CommandText = "SELECT * FROM abc";
    sqlCmd.Connection = sqlConn;
    sqlConn.Open();
    // CommandBehavior.CloseConnection: 關閉 Reader 時自動關閉連線
    sqlReader = sqlCmd.ExecuteReader(CommandBehavior.CloseConnection);
    return sqlReader;
}

資料異動操作

更新 (參數化防注入)

public void Update(string id, string field1, string field2 /*, ... */) {
    sqlCmd.CommandText = @"UPDATE TableName 
        SET Field1 = @Field1, Field2 = @Field2 
        WHERE ID = @ID";
    sqlCmd.Parameters.Clear();
    sqlCmd.Parameters.AddWithValue("@Field1", field1);
    sqlCmd.Parameters.AddWithValue("@Field2", field2);
    sqlCmd.Parameters.AddWithValue("@ID", id);
    sqlCmd.Connection = sqlConn;
    sqlConn.Open();
    sqlCmd.ExecuteNonQuery();
    sqlConn.Close();
}

刪除

public void Delete(string id) {
    sqlCmd.CommandText = "DELETE FROM abc WHERE ID = @ID";
    sqlCmd.Parameters.Clear();
    sqlCmd.Parameters.AddWithValue("@ID", id);
    sqlCmd.Connection = sqlConn;
    sqlConn.Open();
    sqlCmd.ExecuteNonQuery();
    sqlConn.Close();
}

ASP.NET GridView 整合

Web.config 連線字串

<connectionStrings>
  <add name="MyDB" 
       connectionString="Server=.;Database=TestDB;Integrated Security=SSPI" 
       providerName="System.Data.SqlClient" />
</connectionStrings>

ObjectDataSource 設定

  1. 資料來源類型:DataSource (業務物件)
  2. Select/Insert/Update/Delete 方法對應類別方法
  3. 參數來源:QueryString/Control/Session/Profile 等

GridView 分頁與排序屬性

  • AllowPaging="true"、PageSize="10"
  • AllowSorting="true"
  • EnableSortingAndPagingCallbacks="true" (AJAX 回呼模式)

關鍵最佳實踐

  1. 參數化查詢:所有 SQL 異動操作強制使用 Parameters.AddWithValue
  2. 連線管理:using 區塊或 try/finally 確保關閉
  3. 資源釋放:Command、Adapter、Connection 實作 IDisposable
  4. 分頁策略:大資料量採用資料庫端分頁 (ROW_NUMBER/OFFSET-FETCH)
  5. 例外處理:捕獲 SqlException 記錄錯誤碼與訊息
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved