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

Visual C# 存取不同資料庫實戰指南(三)

     編輯:關於C語言

前言

本系列最終篇,將完整展示存取遠端 SQL Server 7.0 資料庫的程式碼,並總結不同資料庫存取的異同點與核心心法。

一、存取 SQL Server 7.0 的兩大差異

1. 連線字串提供者不同

string strConnect = "Provider=SQLOLEDB.1;Persist Security Info=False;" +
                    "User ID=sa;Initial Catalog=xsgl;Data Source=czdy1";
  • Provider=SQLOLEDB.1:SQL Server 專用 OLE DB 提供者
  • Initial Catalog:資料庫名稱(Access 使用 Data Source 指定檔案)
  • Data Source:伺服器名稱或 IP 位址
  • User ID:登入帳號(支援 SQL Server 驗證模式)

2. 不需匯入 System.Windows.Forms

遠端資料庫存取不需 Application.StartupPath,故可移除此命名空間參考,減少相依性。

二、完整程式碼:second.cs

using System;
using System.Data.OleDb;

class OleDbTest
{
    public static void Main()
    {
        string strConnect = "Provider=SQLOLEDB.1;Persist Security Info=False;" +
                            "User ID=sa;Initial Catalog=xsgl;Data Source=czdy1";
        
        OleDbConnection conn = new OleDbConnection(strConnect);
        OleDbCommand cmd = new OleDbCommand("SELECT * FROM xsk", conn);

        try
        {
            conn.Open();
            OleDbDataReader reader = cmd.ExecuteReader();
            
            Console.WriteLine("遠端資料庫查詢結果(第一欄位):");
            while (reader.Read())
            {
                Console.WriteLine(reader.GetString(0));
            }
            
            reader.Close();
            conn.Close();
        }
        catch (OleDbException ex)
        {
            Console.WriteLine("錯誤類型:" + ex.Errors[0].Message);
        }
    }
}

三、執行流程解析

  1. 建立連線物件,指定 SQL Server 提供者與認證資訊
  2. 建立命令物件,指定查詢 SQL
  3. conn.Open() 建立實體網路連線
  4. cmd.ExecuteReader() 回傳 OleDbDataReader 串流式讀取資料
  5. reader.Read() 逐筆前移游標,GetString(0) 取得第一欄位值
  6. 嚴格遵循「先關 Reader,後關 Connection」原則釋放資源
  7. try-catch 捕捉 OleDbException 處理連線失敗、查詢錯誤等異常

四、總結:統一存取模式的威力

透過兩個範例可以發現,存取本地 Access 與遠端 SQL Server 在**程式架構上完全一致**,唯一差異僅在於:

  • 連線字串的 Provider 參數
  • 連線字串的伺服器/檔案路徑參數
  • 驗證方式參數(Windows 整合驗證 vs SQL Server 驗證)

這正是 ADO.NET / OleDb 設計的精華:**統一的程式模型隔離了底層資料庫差異**。掌握此核心心法,未來面對 Oracle、MySQL、PostgreSQL 等任何支援 OLE DB/ODBC 的資料庫,只需更換連線字串與提供者,即可無縫切換。

五、最佳實務建議

  • 使用 using 區塊自動管理連線與 Reader 生命週期(C# 2.0+)
  • 生產環境務必使用參數化查詢防止 SQL Injection
  • 連線字串應儲存於設定檔,勿硬編碼
  • 考慮使用連線池提升效能(OLE DB 預設啟用)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved