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

C# ADO.NET 核心操作大全:連線、命令、資料讀取與資料集完整指南

     編輯:關於C#

一、SqlConnection 連線 SQL Server

1. 引入命名空間

using System.Data.SqlClient;

2. 基本連線範例

SqlConnection conn = new SqlConnection();
conn.ConnectionString = "user id=sa;password=sinofindb;initial catalog=test;data source=127.0.0.1;Connect Timeout=30";
conn.Open();

3. 改良版(建議實務採用)

string connStr = "user id=sa;password=sinofindb;Database=test;data source=127.0.0.1;Connect Timeout=30";
using (SqlConnection conn = new SqlConnection(connStr))
{
    conn.Open();
    // 執行資料庫操作...
}

二、OleDbConnection 通用連線方式

1. 引入命名空間

using System.Data.OleDb;

2. 連線字串範例

資料庫類型連線字串範例
SQL Server (OLE DB)Provider=SQLOLEDB;Data Source=localhost;Initial Catalog=test;Integrated Security=SSPI;
Access (.mdb)Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\db2000.mdb;Persist Security Info=False;
OracleProvider=MSDAORA;Data Source=db;user id=sa;password=sinofindb
提示: Access 連線字串可透過建立 .udl 檔案(通用資料連結)以視覺化方式產生。

三、SqlCommand 命令物件完整用法

1. 四種建構函式

// ① 無參數
SqlCommand cmd = new SqlCommand();

// ② 指定 SQL 文字
string sql = "SELECT * FROM mindata";
SqlCommand cmd = new SqlCommand(sql);

// ③ 指定 SQL 文字與連線
SqlCommand cmd = new SqlCommand(sql, conn);

// ④ 指定 SQL 文字、連線與交易
SqlTransaction trans = conn.BeginTransaction();
SqlCommand cmd = new SqlCommand(sql, conn, trans);

2. 關聯連線與設定命令文字

// 方式一
cmd.Connection = conn;

// 方式二:由連線建立命令
SqlCommand cmd = conn.CreateCommand();
cmd.CommandText = "SELECT * FROM mindata";

3. 多重查詢

以分號分隔多條 SQL 陳述句,可一次傳送多個查詢並取得多個結果集。

4. 四大執行方法對照

方法回傳值適用情境
ExecuteReader()SqlDataReader查詢傳回一或多列資料
ExecuteNonQuery()int (影響列數)INSERT/UPDATE/DELETE 等非查詢操作
ExecuteScalar()object (第一列第一欄)聚合函數、單一值查詢
ExecuteXmlReader()XmlReader產生 XML 資料流

5. SqlDataReader 逐列讀取範例

using (SqlDataReader reader = cmd.ExecuteReader())
{
    while (reader.Read())
    {
        Console.WriteLine(reader.GetString(0));   // 指定欄位以字串取值
        Console.WriteLine(reader.GetValue(1));    // 以原生型別取值
    }
}

6. ExecuteScalar 範例

cmd.CommandText = "SELECT COUNT(*) AS NumberOfRegions FROM region";
int count = (int)cmd.ExecuteScalar();

四、DataReader 進階操作

1. 三種索引方式

// 序數索引
while (reader.Read())
    Console.WriteLine("{0}\t{1}", reader[0], reader[1]);

// 欄位名稱索引
while (reader.Read())
    Console.WriteLine("{0}\t{1}", reader["code"], reader["name"]);

2. 型別存取器

方法說明
GetChar(int)取得單一字元
GetDateTime(int)取得 DateTime 型別
GetInt16(int)取得 16 位元整數
GetString(int)取得字串

3. 取得結構描述資訊

int fieldCount = reader.FieldCount;
Type fieldType = reader.GetFieldType(ordinal);
string typeName = reader.GetDataTypeName(ordinal);
string colName = reader.GetName(ordinal);
int ordinal = reader.GetOrdinal("columnName");
DataTable schema = reader.GetSchemaTable();

4. 多結果集處理

do
{
    while (reader.Read())
        Console.WriteLine("{0}\t{1}", reader.GetInt32(0), reader.GetString(1));
} while (reader.NextResult());

五、SqlDataAdapter 與資料填充

1. 常用建構函式

// 空建構
SqlDataAdapter adapter = new SqlDataAdapter();

// 指定 SelectCommand
SqlDataAdapter adapter = new SqlDataAdapter(cmd);

// SQL 字串 + 連線物件
SqlDataAdapter adapter = new SqlDataAdapter(sql, conn);

// SQL 字串 + 連線字串
SqlDataAdapter adapter = new SqlDataAdapter(sql, connStr);

2. Fill 方法多載

簽章說明
Fill(DataSet)填入 DataSet,資料表命名為 "Table"
Fill(DataSet, string)指定資料表名稱
Fill(DataSet, int, int, string)分頁填充(起始筆數、最大筆數、表名)
Fill(DataTable)直接填入 DataTable

六、DataSet 與相關集合類別速查

1. DataSet 建立與填充

DataSet ds = new DataSet("MyDataSet");
adapter.Fill(ds, "Customers");

2. DataTableCollection 存取

DataTableCollection tables = ds.Tables;
DataTable table = tables["Customers"];

3. DataTable.Select 動態篩選與排序

// 全部列
DataRow[] rows = table.Select();

// 篩選條件
DataRow[] rows = table.Select("id > 5");

// 篩選 + 排序
DataRow[] rows = table.Select("id > 5", "name DESC");

// 篩選 + 排序 + 列狀態
DataRow[] rows = table.Select("id > 5", "name DESC", DataViewRowState.CurrentRows);

七、DataView 動態視圖

1. 建立與篩選

DataView view = new DataView(ds.Tables["Suppliers"], "id > 5", "name DESC", DataViewRowState.CurrentRows);

2. 逐列列舉

foreach (DataRowView rowView in view)
{
    for (int i = 0; i < view.Table.Columns.Count; i++)
        Console.Write(rowView[i] + "\t");
    Console.WriteLine();
}

總結: 本文系統整理了 ADO.NET 核心類別的建構、關聯、執行與資料讀取完整流程,適合作為開發速查手冊。實務上建議搭配 using 區塊管理連線與資源生命週期,並善用參數化查詢防範 SQL Injection。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved