1. 程式人生 > >SQL Server基礎(八) VS2015 連線資料庫——中級篇:System.Data.SqlClient名稱空間每個類的使用方法。

SQL Server基礎(八) VS2015 連線資料庫——中級篇:System.Data.SqlClient名稱空間每個類的使用方法。

一、簡介

       連線資料庫,需要用到常用的幾個資料類。上一篇部落格介紹了資料的基礎入門,但沒有詳細解釋每個物件類的使用方法。

原 SQL Server基礎(七) VS2015 連線資料庫——基礎入門篇:主要分為配置並載入App.config檔案、建立資料工廠物件、建立連線物件、建立命令物件、建立讀取器物件幾個步驟。  

      本部落格將深入介紹 using System.Data.SqlClient名稱空間下,每個物件類的使用方法,這些物件類包括了:

連線物件類(詳細解釋見程式碼):SqlConnection

連線字串類(這裡沒用到,自己百度吧):SqlConnectionStringBuilder

命令物件類(詳細解釋見程式碼):SqlCommand

資料讀取器類(詳細解釋見程式碼):SqlDataReader

       你會發現,這些類都是帶有Sql的標籤,說明它們都是直接引用SQL資料相關的類,即位於名稱空間System.Data.SqlClient:

using System.Data.SqlClient; //SqlConnection類、SqlCommand類、SqlDataReader類的名稱空間

     但是上一篇部落格中,用到的類都是資料庫通訊類,位於名稱空間System.Data.Common。這些類可以操作任何一個數據庫。

using System.Data.Common;    //DbProviderFactory、DbProviderFactories、DbConnection、DbCommand、DbDataReader的名稱空間

以上就是 using System.Data.SqlClient和using System.Data.Common的區別。

二、using System.Data.SqlClient; //SqlConnection類、SqlCommand類、SqlDataReader類的名稱空間

1、輸出單個表

直接放程式碼,Program.cs:

#region (二)連線資料庫:更加詳細解釋 System.Data.SqlClient每個物件類的使用方法。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Messaging;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Xml.Linq;
//using System.Configuration;  //ConfigurationManager類的名稱空間
using System.Data.SqlClient; //SqlConnection類、SqlCommand類、SqlDataReader類的名稱空間
//using System.Data.Common;    //DbProviderFactory、DbProviderFactories、DbConnection、DbCommand、DbDataReader的名稱空間


namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("重要的事情說三遍:我要準備開始連線資料了,各位。然後列印1張資料表到控制檯給大家look look ");
            Console.WriteLine("重要的事情說三遍:我要準備開始連線資料了,各位。然後列印1張資料表到控制檯給大家look look ");
            Console.WriteLine("重要的事情說三遍:我要準備開始連線資料了,各位。然後列印1張資料表到控制檯給大家look look ");
            //建立連線物件並開啟
            using (SqlConnection sqlConnection = new SqlConnection())
            {
                sqlConnection.ConnectionString = @"Data Source = (localdb)\MSSQLLocalDB; Integrated Security = SSPI; Initial Catalog = E:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL14.MSSQLSERVER\MSSQL\DATA\MYSQL_LIBRARY\AUTOLOT.MDF";
                sqlConnection.Open();

                //連線物件附加上了命令物件(即SQL語句)
                string strSQL = "Select * From Inventory";
                SqlCommand myCommand = new SqlCommand(strSQL, sqlConnection);

                //資料讀寫器
                using (SqlDataReader sqlDataReader = myCommand.ExecuteReader())
                {
                    while (sqlDataReader.Read())
                    {
                        //Console.WriteLines("輸出當前汽車資料表Inventory的汽車ID及其品牌");
                        Console.WriteLine("-> Make:{0}, PetName:{1}, Color:{2}.", sqlDataReader["Make"].ToString(), sqlDataReader["PetName"].ToString(), sqlDataReader["Color"].ToString());
                    }
                }
            } 
            Console.ReadLine();
        }
    }
}
#endregion

輸出結果:

重要的事情說三遍:我要準備開始連線資料了,各位。然後列印一張資料表到控制檯給大家look look
重要的事情說三遍:我要準備開始連線資料了,各位。然後列印一張資料表到控制檯給大家look look
重要的事情說三遍:我要準備開始連線資料了,各位。然後列印一張資料表到控制檯給大家look look
-> Make:VW, PetName:Zippy, Color:Black.
-> Make:Ford, PetName:Rustry, Color:Rust.
-> Make:Lff, PetName:Aaa, Color:Red.
-> Make:BMW, PetName:Bimmer, Color:Black.

2、輸出多個表

直接放程式碼,Program.cs:

#region (二)連線資料庫:更加詳細解釋 System.Data.SqlClient每個物件類的使用方法。
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Messaging;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Xml.Linq;
//using System.Configuration;  //ConfigurationManager類的名稱空間
using System.Data.SqlClient; //SqlConnection類、SqlCommand類、SqlDataReader類的名稱空間
//using System.Data.Common;    //DbProviderFactory、DbProviderFactories、DbConnection、DbCommand、DbDataReader的名稱空間


namespace test
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("重要的事情說三遍:我要準備開始連線資料了,各位。然後列印2張資料表到控制檯給大家look look ");
            Console.WriteLine("重要的事情說三遍:我要準備開始連線資料了,各位。然後列印2張資料表到控制檯給大家look look ");
            Console.WriteLine("重要的事情說三遍:我要準備開始連線資料了,各位。然後列印2張資料表到控制檯給大家look look ");
            Console.WriteLine();
            //建立連線物件並開啟
            using (SqlConnection sqlConnection = new SqlConnection())
            {

                sqlConnection.ConnectionString = @"Data Source = (localdb)\MSSQLLocalDB; Integrated Security = SSPI; Initial Catalog = E:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL14.MSSQLSERVER\MSSQL\DATA\MYSQL_LIBRARY\AUTOLOT.MDF";
                sqlConnection.Open();
                //顯示連線狀態
                ShowConnectionStatus(sqlConnection);
                Console.WriteLine();

                //連線物件附加上了命令物件(即SQL語句)
                string strSQL = "Select * From Inventory; select * from Customers";
                SqlCommand myCommand = new SqlCommand(strSQL, sqlConnection);

                //資料讀寫器
                using (SqlDataReader sqlDataReader = myCommand.ExecuteReader())
                {
                    do
                    {
                        while (sqlDataReader.Read())//迴圈輸出當前表的每列
                        {
                            for (int i = 0; i < sqlDataReader.FieldCount; i++)//sqlDataReader.FieldCount表示當前表的列數
                            {
                                Console.WriteLine(sqlDataReader.GetName(i) + " = " + sqlDataReader.GetValue(i));
                            }
                        }
                        Console.WriteLine();
                    }
                    while (sqlDataReader.NextResult());//迴圈輸出多個表。我這裡輸出表Inventory,和表Customers
                }
            }
            Console.ReadLine();
        }

        /// <summary>
        /// 顯示連線物件的各種狀態
        /// </summary>
        /// <param name="sqlConnectionVar"></param>
        static void ShowConnectionStatus(SqlConnection sqlConnectionVar)
        {
            Console.WriteLine("sqlConnectionVar.DataSource        = {0}", sqlConnectionVar.DataSource);
            Console.WriteLine("sqlConnectionVar.Database          = {0}", sqlConnectionVar.Database);
            Console.WriteLine("sqlConnectionVar.ConnectionTimeout = {0}", sqlConnectionVar.ConnectionTimeout);
            Console.WriteLine("sqlConnectionVar.State.ToString()  = {0}", sqlConnectionVar.State.ToString());
        }
    }
}
#endregion

輸出結果:

重要的事情說三遍:我要準備開始連線資料了,各位。然後列印一張資料表到控制檯給大家look look
重要的事情說三遍:我要準備開始連線資料了,各位。然後列印一張資料表到控制檯給大家look look
重要的事情說三遍:我要準備開始連線資料了,各位。然後列印一張資料表到控制檯給大家look look

sqlConnectionVar.DataSource        = (localdb)\MSSQLLocalDB
sqlConnectionVar.Database          = E:\PROGRAM FILES\MICROSOFT SQL SERVER\MSSQL14.MSSQLSERVER\MSSQL\DATA\MYSQL_LIBRARY\AUTOLOT.MDF
sqlConnectionVar.ConnectionTimeout = 15
sqlConnectionVar.State.ToString()  = Open

CarID = 32
Make = VW
Color = Black
PetName = Zippy
CarID = 83
Make = Ford
Color = Rust
PetName = Rustry
CarID = 222
Make = Lff
Color = Red
PetName = Aaa
CarID = 1000
Make = BMW
Color = Black
PetName = Bimmer

CustID = 1
FirstName = Dave
LastName = B1
CustID = 2
FirstName = Matt
LastName = B2
CustID = 3
FirstName = Steve
LastName = B3
CustID = 4
FirstName = Pat
LastName = B4

三、總結

1、無論是上一篇部落格,還是當前部落格,只是輸出資料表,並沒有對數表進行增刪改等功能。

2、下篇部落格將實現增刪改等功能。