SQL Server基礎(八) VS2015 連線資料庫——中級篇:System.Data.SqlClient名稱空間每個類的使用方法。
阿新 • • 發佈:2019-01-09
一、簡介
連線資料庫,需要用到常用的幾個資料類。上一篇部落格介紹了資料的基礎入門,但沒有詳細解釋每個物件類的使用方法。
原 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、下篇部落格將實現增刪改等功能。