使用C#連接SQL?Server的詳細(xì)圖文教程
一、提前準(zhǔn)備好數(shù)據(jù)庫(kù)
1. 連接數(shù)據(jù)庫(kù)服務(wù)器

這里我使用的是SQL Server 身份驗(yàn)證(也可使用windows 身份驗(yàn)證)
賬戶(hù)信息如下:
登錄名:sa
密碼:mima(輸入時(shí)自動(dòng)隱藏)
2. 建立數(shù)據(jù)庫(kù)和表

這里我的數(shù)據(jù)庫(kù)信息如下:
服務(wù)器名:HG66\MSSQLSERVER01
數(shù)據(jù)庫(kù)名:DataBase01
表名:Table_1
三個(gè)屬性分別為:ID、姓名、年齡
二、創(chuàng)建項(xiàng)目并引入命名空間
1. 創(chuàng)建一個(gè)項(xiàng)目(這里以控制臺(tái)應(yīng)用為例)
建議創(chuàng)建以 .NET Framework 為框架的項(xiàng)目,否則可能會(huì)出現(xiàn)“找不到類(lèi)型名“SqlConnection“”這樣的錯(cuò)誤,原因?yàn)闆](méi)有使用 .NET Framework 框架的項(xiàng)目默認(rèn)沒(méi)有引入和SQL相關(guān)的命名空間


解決方法:【C#】找不到類(lèi)型名“SqlConnection“的解決方法
2. 引入相關(guān)命名空間
using System.Data; // 表的命名空間 using System.Data.SqlClient; // 和SQL相關(guān)的命名空間
三、使用ADO.NET訪問(wèn)數(shù)據(jù)庫(kù)
1. 配置連接信息
在第一部分,已經(jīng)知道了我數(shù)據(jù)庫(kù)的信息:
服務(wù)器名:HG66\MSSQLSERVER01
登錄名:sa
密碼:mima
數(shù)據(jù)庫(kù)名:DataBase01
方法一
先聲明一個(gè)SqlConnectionStringBuilder對(duì)象,再設(shè)置這個(gè)對(duì)象的屬性
// 聲明一個(gè)SqlConnectionStringBuilder對(duì)象 SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder(); scsb.DataSource = "HG66\\MSSQLSERVER01"; // 設(shè)置數(shù)據(jù)源服務(wù)器,注意這里的單斜線(xiàn)變雙斜線(xiàn)了 scsb.UserID = "sa"; // 設(shè)置用戶(hù)名 scsb.Password = "mima"; // 設(shè)置密碼 scsb.InitialCatalog = "DataBase01"; // 設(shè)置要訪問(wèn)的數(shù)據(jù)庫(kù)
方法二
先聲明一個(gè)字符串,再設(shè)置字符串的值,字符串的值符合下面這個(gè)式子
"Data Source = (1); Database = (2); User Id = (3); Password = (4)"
(1)是數(shù)據(jù)源服務(wù)器
(2)是要訪問(wèn)的數(shù)據(jù)庫(kù) (Database改為Initial Catalog也可以)
(3)是用戶(hù)名
(4)是密碼
string ConStr = "Data Source = HG66\\MSSQLSERVER01; Database = DataBase01;" +"User Id = sa; Password = mima";
上面這種輸入用戶(hù)名和密碼的是使用了 SQL Server 身份驗(yàn)證,如果要使用 windows 身份驗(yàn)證,只需要將 “User Id = sa; Password = mima” 改為 “Trusted_Connection = SSPI” 或 “Integrated Security = SSPI”
string ConnStr = "server = HG66\\MSSQLSERVER01; Database = DataBase01;" +"Trusted_Connection = SSPI";
2. 創(chuàng)建連接并打開(kāi)數(shù)據(jù)庫(kù)
使用方法一的 scsb 或方法二的 ConStr 來(lái)創(chuàng)建連接,創(chuàng)建連接后,需要通過(guò)這個(gè)連接打開(kāi)數(shù)據(jù)庫(kù),這樣才能操作數(shù)據(jù)庫(kù)
方法一的 scsb 由于不是string類(lèi)型,所以需要使用ToString()方法
// 創(chuàng)建連接 SqlConnection SqlCon = new SqlConnection(scsb.ToString()); // 打開(kāi)數(shù)據(jù)庫(kù) SqlCon.Open();
方法二的 ConStr 可以直接作為參數(shù)傳進(jìn)去
// 創(chuàng)建連接 SqlConnection SqlCon = new SqlConnection(ConStr); // 打開(kāi)數(shù)據(jù)庫(kù) SqlCon.Open();
3. 執(zhí)行SQL查詢(xún)語(yǔ)句
我現(xiàn)有數(shù)據(jù)庫(kù)的數(shù)據(jù)如下

假設(shè)我們要查找年齡為60的人的所有信息,在數(shù)據(jù)庫(kù)應(yīng)用中的操作如下

但是使用C#的話(huà),①我們需要先使用一個(gè)字符串來(lái)存儲(chǔ)SQL查詢(xún)語(yǔ)句,②再通過(guò)這個(gè)字符串和已經(jīng)打開(kāi)的數(shù)據(jù)庫(kù)來(lái)創(chuàng)建用于執(zhí)行SQL語(yǔ)句的對(duì)象,此時(shí)的對(duì)象并未執(zhí)行SQL查詢(xún)語(yǔ)句,而是已經(jīng)封裝好,③于是我們執(zhí)行對(duì)象的SQL查詢(xún)語(yǔ)句并接受結(jié)果,④最后讀取結(jié)果里的數(shù)據(jù)并輸出
// 1、創(chuàng)建要執(zhí)行的SQL查詢(xún)語(yǔ)句
string str = "select * from table_1 where 年齡 = 60";
// 2、創(chuàng)建用于執(zhí)行SQL查詢(xún)語(yǔ)句的對(duì)象
SqlCommand SqlCom = new SqlCommand(str, SqlCon);// 參數(shù)1:SQL語(yǔ)句字符串。參數(shù)2:已經(jīng)打開(kāi)的數(shù)據(jù)庫(kù)
// 3、執(zhí)行對(duì)象的SQL查詢(xún)語(yǔ)句并接受結(jié)果
SqlDataReader Sdr = SqlCom.ExecuteReader();
// 4、讀取結(jié)果的數(shù)據(jù)
while (Sdr.Read())
{
Console.WriteLine("編號(hào):" + Sdr["ID"].ToString());
Console.WriteLine("姓名:" + Sdr["姓名"].ToString());
Console.WriteLine("年齡:" + Sdr["年齡"].ToString());
}
如果所有的操作已完成,不要忘了關(guān)閉數(shù)據(jù)庫(kù)
// 關(guān)閉數(shù)據(jù)庫(kù) SqlCon.Close();
運(yùn)行程序,結(jié)果如下,查詢(xún)的結(jié)果與數(shù)據(jù)庫(kù)應(yīng)用中查詢(xún)的結(jié)果相同

本程序的源碼如下
using System;
using System.Data; // 表的命名空間
using System.Data.SqlClient; // 和SQL相關(guān)的命名空間
namespace ConsoleApp1
{
internal class Program
{
static void Main(string[] args)
{
// 方法一
SqlConnectionStringBuilder scsb = new SqlConnectionStringBuilder();
scsb.DataSource = "HG66\\MSSQLSERVER01"; // 設(shè)置數(shù)據(jù)源服務(wù)器
scsb.UserID = "sa"; // 設(shè)置用戶(hù)名
scsb.Password = "mima"; // 密碼
scsb.InitialCatalog = "DataBase01"; // 設(shè)置要訪問(wèn)的數(shù)據(jù)庫(kù)
// 方法二
string ConStr = "Data Source = HG66\\MSSQLSERVER01; Database = DataBase01;"
+ "User Id = sa; Password = mima";
// 創(chuàng)建連接
SqlConnection SqlCon = new SqlConnection(ConStr);
// 打開(kāi)數(shù)據(jù)庫(kù)
SqlCon.Open();
// 1、創(chuàng)建要執(zhí)行的SQL語(yǔ)句
string str = "select * from table_1 where 年齡 = 60";
// 2、創(chuàng)建用于執(zhí)行SQL語(yǔ)句的對(duì)象
SqlCommand SqlCom = new SqlCommand(str, SqlCon);
// 3、執(zhí)行SQL語(yǔ)句并接受結(jié)果
SqlDataReader Sdr = SqlCom.ExecuteReader();
// 4、讀取結(jié)果的數(shù)據(jù)
while (Sdr.Read())
{
Console.WriteLine("編號(hào):" + Sdr["ID"].ToString());
Console.WriteLine("姓名:" + Sdr["姓名"].ToString());
Console.WriteLine("年齡:" + Sdr["年齡"].ToString());
}
// 關(guān)閉數(shù)據(jù)庫(kù)
SqlCon.Close();
Console.ReadKey();
}
}
}
總結(jié)
到此這篇關(guān)于使用C#連接SQL Server的文章就介紹到這了,更多相關(guān)C#連接SQL Server內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- c#連接sqlserver數(shù)據(jù)庫(kù)、插入數(shù)據(jù)、從數(shù)據(jù)庫(kù)獲取時(shí)間示例
- C#實(shí)現(xiàn)連接SQL Server2012數(shù)據(jù)庫(kù)并執(zhí)行SQL語(yǔ)句的方法
- C#編程實(shí)現(xiàn)連接SQL SERVER數(shù)據(jù)庫(kù)實(shí)例詳解
- C#連接到sql server2008數(shù)據(jù)庫(kù)的實(shí)例代碼
- C#連接SQL Server的實(shí)現(xiàn)方法
- C#使用SqlConnection連接到SQL Server的代碼示例
- C#實(shí)現(xiàn)異步連接Sql Server數(shù)據(jù)庫(kù)的方法
- 關(guān)于C#連接SQL Server時(shí)提示用戶(hù)登錄失敗的解決方法
- C#連接SQL Server數(shù)據(jù)庫(kù)的實(shí)例講解
- C#連接SQL?Sever數(shù)據(jù)庫(kù)詳細(xì)圖文教程
相關(guān)文章
wpf將表中數(shù)據(jù)顯示到datagrid示例
這篇文章主要介紹了wpf將表中數(shù)據(jù)顯示到datagrid示例,需要的朋友可以參考下2014-02-02
基于C#?實(shí)現(xiàn)?OPC?DA?Server的問(wèn)題小結(jié)
這篇文章主要介紹了基于C#?實(shí)現(xiàn)?OPC?DA?Server的相關(guān)知識(shí),關(guān)于C#怎么編寫(xiě)一個(gè)進(jìn)程外的DCOM組件,這里先不做介紹了,這里主要介紹下OPC?DA?Server?的第一個(gè)接口,感興趣的朋友跟隨小編一起看看吧2024-04-04
WCF實(shí)現(xiàn)進(jìn)程間管道通信Demo分享
下面小編就為大家分享一篇WCF實(shí)現(xiàn)進(jìn)程間管道通信Demo,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2017-12-12
C#中32位浮點(diǎn)數(shù)Float(Real)一步步按位Bit進(jìn)行分析
這篇文章主要介紹了C#中32位浮點(diǎn)數(shù)Float(Real)一步步按位Bit進(jìn)行分析,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-08-08
Winform下實(shí)現(xiàn)圖片切換特效的方法
這篇文章主要介紹了Winform下實(shí)現(xiàn)圖片切換特效的方法,包括百葉窗、淡入、旋轉(zhuǎn)等多種效果,需要的朋友可以參考下2014-08-08
C#實(shí)現(xiàn)終止正在執(zhí)行的線(xiàn)程
這篇文章主要介紹了C#實(shí)現(xiàn)終止正在執(zhí)行的線(xiàn)程的方法,針對(duì)臨界資源等容易出現(xiàn)錯(cuò)誤的地方進(jìn)行了分析,并提出了改進(jìn)方案與實(shí)例,需要的朋友可以參考下2014-09-09
C#函數(shù)式程序設(shè)計(jì)之用閉包封裝數(shù)據(jù)的實(shí)現(xiàn)代碼
如果一個(gè)程序設(shè)計(jì)語(yǔ)言能夠用高階函數(shù)解決問(wèn)題,則意味著數(shù)據(jù)作用域問(wèn)題已十分突出。當(dāng)函數(shù)可以當(dāng)成參數(shù)和返回值在函數(shù)之間進(jìn)行傳遞時(shí),編譯器利用閉包擴(kuò)展變量的作用域,以保證隨時(shí)能得到所需要的數(shù)據(jù)2014-03-03

