iT邦幫忙

2021 iThome 鐵人賽

DAY 10
1
自我挑戰組

C# 與 .Net Core 雜記系列 第 10

C# .Net 使用 ADO.NET 連接資料庫

什麼是 ADO.NET

ADO.NET 是微軟針對 .NET 平台所提供的負責資料存取的類別程式庫, ADO 是 ActiveX Data Object 的縮寫, 是資料庫應用程式與資料來源的橋樑, 主要提供一個物件導向的資料存取架構, 用來開發資料庫應用程式, 包含了 Data Provider 跟 DataSet 兩部分, Data Provider 用來連接與存取資料庫, ADO.NET 定義了一個資料庫存取的標準介面, 讓資料庫管理系統廠商可以依據此標準來開發相對應的 Data Provider, DataSet 是在 ADO.NET 來自資料來源索取的資料暫存於記憶體裡的物件, 透過 DataAdapter 物件與資料庫之間做資料交換, DataSet 中可以包含多個不同的 DataTable 物件, DataTable 由資料欄與資料列所組成, 包含主索引鍵、外部索引鍵、DataTable 間的關聯, DataSet 就像是在記憶體內的資料管理系統.

使用 ADO.NET 連接

首先建立一個 console project, 然後加入 System.Data.SqlClient 套件

dotnet new console -o ado_dot_net 
## 會在 ado_dot_net 目錄建立一個 console project
dotnet add package System.Data.SqlClient --version 4.8.3 
## 加入 System.Data.SqlClient 套件

準備測試用資料表, 這裡我使用本機端的 SQL Server, 建立一個 Persons 資料表如下
id | name | email
------------- | -------------
1 | 陳大貓 | cat@pp.com
2 | 林阿儒 | lin@pp.com

撰寫 Program.cs

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

namespace ado_dot_net
{
  class Program
  {
    static void Main(string[] args)
    {
      Console.WriteLine("Hello World!");
      SqlConnection conn;
      // 連線字串
      string connStr = "Data Source=.;Initial Catalog=mydb;Integrated Security=True";
      // SQL Server 資料庫的連線
      conn = new SqlConnection(connStr);
      // 開啟資料庫連接
      conn.Open();
      Console.WriteLine("Connection successfully");

      // SQL 語句
      string sql = "SELECT 姓名 FROM persons";
      // SQL Server 資料庫執行的 Transact-SQL 陳述式或預存程序
      SqlCommand command = new SqlCommand(sql, conn);
      // SqlCommand 的 ExecuteReader 方法會回傳從資料庫回傳的資料
      // 指定 SqlDataReader 來接回傳資料
      SqlDataReader reader = command.ExecuteReader();
      while (reader.Read())
      {
        Console.WriteLine("{0}", reader.GetString(0));
      }
      // 關閉連線
      conn.Close();
      Console.WriteLine("Connection close successfully");
    }
  }
}

上一篇
C# Expression tree
下一篇
ASP.NET Core MVC
系列文
C# 與 .Net Core 雜記14
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言