sqlserver连接字符串_【自学C#】|| 笔记 39 SQL server 连接数据库
一、ADO.NET數(shù)據(jù)庫(kù)操作? ?
????任何一個(gè)應(yīng)用程序都離不開(kāi)數(shù)據(jù)的存儲(chǔ),數(shù)據(jù)可以在內(nèi)存中存儲(chǔ),但只能在程序運(yùn)行時(shí)存取,無(wú)法持久保存。
????數(shù)據(jù)還可以在磁盤(pán)中以文件的形式存儲(chǔ),但文件的管理和查找又十分煩瑣無(wú)法勝任大數(shù)量的存儲(chǔ)。
????將數(shù)據(jù)存儲(chǔ)到數(shù)據(jù)庫(kù)中是在應(yīng)用程序中持久存儲(chǔ)數(shù)據(jù)的常用方式。
????在 C# 語(yǔ)言中提供了 ADO.NET 組件來(lái)實(shí)現(xiàn)連接數(shù)據(jù)庫(kù)以及操作數(shù)據(jù)庫(kù)中數(shù)據(jù)的功能。
????在 C#?語(yǔ)言中 ADO.NET 是在 ADO 的基礎(chǔ)上發(fā)展起來(lái)的,ADO (Active Data Object) 是一個(gè) COM 組件類(lèi)庫(kù),用于訪問(wèn)數(shù)據(jù)庫(kù),而 ADO.NET 是在 .NET 平臺(tái)上訪問(wèn)數(shù)據(jù)庫(kù)的組件。
??? ADO.NET 是以 ODBC (Open Database Connectivity) 技術(shù)的方式來(lái)訪問(wèn)數(shù)據(jù)庫(kù)的一種技術(shù)。
??? ADO.NET 中的常用命名空間如下表所示。
| System.Data.SqlClient | Microsoft SQL Server |
| System.Data.Odbc? | ODBC |
| System.Data.OracleClient | Oracle |
| System.Data.OleDb | OLE DB |
????在使用 ADO.NET 進(jìn)行數(shù)據(jù)庫(kù)操作時(shí)通常會(huì)用到 5 個(gè)類(lèi),分別是 Connection 類(lèi)、 Command 類(lèi)、DataReader 類(lèi)、DataAdapter 類(lèi)、DataSet 類(lèi)。
????在接下來(lái)的講解中我們將以連接 SQL Server 為例介紹 ADO.NET 中的對(duì)象,引用的命名空間為 System.Data.SqlClient。
????除了 DataSet 類(lèi)以外,其他對(duì)象的前面都加上 Sql,即 SqlConnection、SqlCommand、SqlDataReader、SqlDataAdapter。
1) Connection 類(lèi)
????該類(lèi)主要用于數(shù)據(jù)庫(kù)中建立連接和斷開(kāi)連接的操作,并且能通過(guò)該類(lèi)獲取當(dāng)前數(shù)據(jù)庫(kù)連接的狀態(tài)。
????使用 Connection 類(lèi)根據(jù)數(shù)據(jù)庫(kù)的連接串能連接任意數(shù)據(jù)庫(kù),例如 SQLServer、Oracle、MySQL 等。
????但是在 .NET 平臺(tái)下,由于提供了一個(gè) SQL Server 數(shù)據(jù)庫(kù),并額外提供了一些操作菜單便于操作,所以推薦使用 SQLServer 數(shù)據(jù)庫(kù)。
2) Command 類(lèi)
????該類(lèi)主要對(duì)數(shù)據(jù)庫(kù)執(zhí)行增加、刪除、修改以及查詢(xún)的操作。
????通過(guò)在 Command 類(lèi)的對(duì)象中傳入不同的 SQL 語(yǔ)句,并調(diào)用相應(yīng)的方法來(lái)執(zhí)行 SQL 語(yǔ)句。
3) DataReader 類(lèi)
????該類(lèi)用于讀取從數(shù)據(jù)庫(kù)中查詢(xún)出來(lái)的數(shù)據(jù),但在讀取數(shù)據(jù)時(shí)僅能向前讀不能向后讀, 并且不能修改該類(lèi)對(duì)象中的值。
????在與數(shù)據(jù)庫(kù)的連接中斷時(shí),該類(lèi)對(duì)象中的值也隨之被清除。
4) DataAdapter 類(lèi)
????該類(lèi)與 DataSet 聯(lián)用,它主要用于將數(shù)據(jù)庫(kù)的結(jié)果運(yùn)送到 DataSet 中保存。
??? DataAdapter 可以看作是數(shù)據(jù)庫(kù)與 DataSet 的一個(gè)橋梁,不僅可以將數(shù)據(jù)庫(kù)中的操作結(jié)果運(yùn)送到 DataSet 中,也能將更改后的 DataSet 保存到數(shù)據(jù)庫(kù)中。
5) DataSet 類(lèi)
????該類(lèi)與 DataReader 類(lèi)似,都用于存放對(duì)數(shù)據(jù)庫(kù)查詢(xún)的結(jié)果。
????不同的是,DataSet 類(lèi)中的值不僅可以重復(fù)多次讀取,還可以通過(guò)更改 DataSet 中的值更改數(shù)據(jù)庫(kù)中的值。
????此外,DataSet 類(lèi)中的值在數(shù)據(jù)庫(kù)斷開(kāi)連接的情況下依然可以保留原來(lái)的值。
????(總之,又是好幾個(gè)類(lèi),并用于一個(gè)大型的數(shù)據(jù)集合,也就是所謂的數(shù)據(jù)庫(kù)了。)
二、Connection:連接數(shù)據(jù)庫(kù)
??? C#?語(yǔ)言中 Connection 類(lèi)是 ADO.NET 組件連接數(shù)據(jù)庫(kù)時(shí)第一個(gè)要使用的類(lèi),也是通過(guò)編程訪問(wèn)數(shù)據(jù)庫(kù)的第一步。
????接下來(lái)我們來(lái)了解一下 Connection 類(lèi)中的常用屬性和方法,以及如何連接 SQL Server 數(shù)據(jù)庫(kù)。
????Connection 類(lèi)概述
??? Connection 類(lèi)根據(jù)要訪問(wèn)的數(shù)據(jù)和訪問(wèn)方式不同,使用的命名空間也不同,類(lèi)名也稍有區(qū)別,在這里我們使用的是 SqlConnection 類(lèi),以及微軟提供的 SQL Server 2014 數(shù)據(jù)庫(kù)。
SqlConnection 類(lèi)中提供的常用屬性和方法如下表所示。
| SqlConnection() | 無(wú)參構(gòu)造方法 |
| SqlConnection(string connectionstring) | 帶參數(shù)的構(gòu)造方法,數(shù)據(jù)庫(kù)連接字符串作為參數(shù) |
| Connectionstring | 屬性,獲取或設(shè)置數(shù)據(jù)庫(kù)的連接串 |
| State | 屬性,獲取當(dāng)前數(shù)據(jù)庫(kù)的狀態(tài),由枚舉類(lèi)型 Connectionstate 為其提供值 |
| ConnectionTimeout | 屬性,獲取在嘗試連接時(shí)終止嘗試并生成錯(cuò)誤之前所等待的時(shí)間 |
| DataSource | 屬性,獲取要連接的 SQL Server 的實(shí)例名 |
| Open() | 方法,打開(kāi)一個(gè)數(shù)據(jù)庫(kù)連接 |
| Close() | 方法,關(guān)閉數(shù)據(jù)庫(kù)連接 |
| BeginTransaction() | 方法,開(kāi)始一個(gè)數(shù)據(jù)庫(kù)事務(wù) |
????使用 Connection 類(lèi)連接數(shù)據(jù)庫(kù)
????在使用 Connection 類(lèi)連接 SQL Server 2014 時(shí),先要編寫(xiě)數(shù)據(jù)庫(kù)連接串。
????數(shù)據(jù)庫(kù)連接串的書(shū)寫(xiě)方法有很多,這里介紹兩種常用的方法。
????第1種方式
????????server = 服務(wù)器名稱(chēng) / 數(shù)據(jù)庫(kù)的實(shí)例名 ; uid = 登錄名 ; pwd = 密碼 ; database = 數(shù)據(jù)庫(kù)名稱(chēng)
????其中:
server:用于指定要訪問(wèn)數(shù)據(jù)庫(kù)的數(shù)據(jù)庫(kù)實(shí)例名,服務(wù)器名稱(chēng)可以換成 IP 地址或者數(shù)據(jù)庫(kù)所在的計(jì)算機(jī)名稱(chēng),如果訪問(wèn)的是本機(jī)數(shù)據(jù)庫(kù),則可以使用“.”來(lái)代替,如果使用的是默認(rèn)的數(shù)據(jù)庫(kù)實(shí)例名,則可以省略數(shù)據(jù)庫(kù)實(shí)例名。例如連接的是本機(jī)的默認(rèn)數(shù)據(jù)庫(kù),則可以寫(xiě)成“server = .”。
uid:登錄到指定 SQL Server 數(shù)據(jù)庫(kù)實(shí)例的用戶(hù)名,相當(dāng)于以 SQL Server 身份驗(yàn)證方式登錄數(shù)據(jù)庫(kù)時(shí)使用的用戶(hù)名,例如 sa 用戶(hù)。
pwd:與 uid 用戶(hù)對(duì)應(yīng)的密碼。
database:要訪問(wèn)數(shù)據(jù)庫(kù)實(shí)例下的數(shù)據(jù)庫(kù)名。
????
????第2種方式
????????Data Source = 服務(wù)器名稱(chēng) \ 數(shù)據(jù)庫(kù)實(shí)例名 ; Initial Catalog = 數(shù)據(jù)庫(kù)名稱(chēng) ; User ID = 用戶(hù)名 ; Password = 密碼
????其中:
Data Source:與第1種連接串寫(xiě)法中的 server 屬性的寫(xiě)法一樣,用于指定數(shù)據(jù)庫(kù)所在的服務(wù)器名稱(chēng)和數(shù)據(jù)庫(kù)實(shí)例名,如果連接的是本機(jī)的默認(rèn)數(shù)據(jù)庫(kù)實(shí)例,則寫(xiě)成“Data Source=. ”的形式。
Initial Catalog:與第 1 種連接串寫(xiě)法中的 database 屬性的寫(xiě)法一樣,用于指定在 Data Source 中數(shù)據(jù)庫(kù)實(shí)例下的數(shù)據(jù)庫(kù)名。
User ID:與第 1 種連接串寫(xiě)法中的 uid 屬性的寫(xiě)法一樣,用于指定登錄數(shù)據(jù)庫(kù)的用戶(hù)名。
Password:與第 1 種連接串寫(xiě)法中的 pwd 屬性的寫(xiě)法一樣,用于指定 User ID 用戶(hù)名所對(duì)應(yīng)的密碼。
????此外,還可以在連接字符串中使用 Integrate Security = True 的屬性,省略用戶(hù)名和密碼,即以 Windows 身份驗(yàn)證方式登錄 SQL Server 數(shù)據(jù)庫(kù)。?將數(shù)據(jù)庫(kù)連接更改如下:
????????Data Source = 服務(wù)器名稱(chēng) \ 數(shù)據(jù)庫(kù)實(shí)例名 ; Initial Catalog = 數(shù)據(jù)庫(kù)名稱(chēng) ; Integrate Security = True
????需要注意的是,由于在使用 Windows 身份驗(yàn)證的方式登錄數(shù)據(jù)庫(kù)時(shí),會(huì)對(duì)數(shù)據(jù)庫(kù)的安全性造成一定的影響,因此不建議使用 Windows 身份驗(yàn)證的方法,而是使用 SQL Server 驗(yàn)證方式登錄數(shù)據(jù)庫(kù),即指定用戶(hù)名和密碼。
三、使用 SqlConnection 類(lèi)與數(shù)據(jù)庫(kù)連接
????在完成了數(shù)據(jù)庫(kù)連接串的編寫(xiě)后即可使用 SqlConnection 類(lèi)與數(shù)據(jù)庫(kù)連接,分以下 3 步完成。
????1) 創(chuàng)建 SqlConnection 類(lèi)的實(shí)例
????對(duì)于 SqlConnection 類(lèi)來(lái)說(shuō),上表中提供了兩個(gè)構(gòu)造方法,通常是使用帶一個(gè)字符串參數(shù)的構(gòu)造方法來(lái)設(shè)置數(shù)據(jù)庫(kù)的連接串創(chuàng)建其實(shí)例,語(yǔ)句形式如下。? ? ????
SqlConnection 連接對(duì)象名 = new SqlConnection( 數(shù)據(jù)庫(kù)連接串 );????2) 打開(kāi)數(shù)據(jù)庫(kù)連接
????在創(chuàng)建 SqlConnection 連接類(lèi)的實(shí)例后并沒(méi)有連接上數(shù)據(jù)庫(kù),需要使用連接類(lèi)的 Open 方法打開(kāi)數(shù)據(jù)庫(kù)的連接。
????在使用 Open 方法打開(kāi)數(shù)據(jù)庫(kù)連接時(shí),如果數(shù)據(jù)庫(kù)的連接串不正確或者數(shù)據(jù)庫(kù)的服務(wù)處于關(guān)閉狀態(tài),會(huì)出現(xiàn)打開(kāi)數(shù)據(jù)庫(kù)失敗的相關(guān)異常,因此需要通過(guò)異常處理來(lái)處理異常。
????打開(kāi)數(shù)據(jù)庫(kù)連接的語(yǔ)句形式如下。
????3) 關(guān)閉數(shù)據(jù)庫(kù)連接
????在對(duì)數(shù)據(jù)庫(kù)的操作結(jié)束后要將數(shù)據(jù)庫(kù)的連接斷開(kāi),以節(jié)省數(shù)據(jù)庫(kù)連接的資源。
????關(guān)閉數(shù)據(jù)庫(kù)連接的語(yǔ)句形式如下。
????如果在打開(kāi)數(shù)據(jù)庫(kù)連接時(shí)使用了異常處理,則將關(guān)閉數(shù)據(jù)庫(kù)連接的語(yǔ)句放到異常處理的 finally 語(yǔ)句中,這樣能保證無(wú)論是否發(fā)生了異常都將數(shù)據(jù)庫(kù)連接斷開(kāi),以釋放資源。
????除了使用異常處理的方式釋放資源外,還可以使用 using 的方式釋放資源。
????具體的語(yǔ)句如下。
??? using 關(guān)鍵字的用法主要有兩個(gè),一個(gè)是引用命名空間,一個(gè)是創(chuàng)建非托管資源對(duì)象。
????在 .NET 平臺(tái)上資源分為托管資源和非托管資源,托管資源是由 .NET 框架直接提供對(duì)其資源在內(nèi)存中的管理,例如聲明的變量;非托管資源則不能直接由 .NET 框架對(duì)其管理,需要使用代碼來(lái)釋放資源,例如數(shù)據(jù)庫(kù)資源、操作系統(tǒng)資源等。
????1.例
????創(chuàng)建與本機(jī) SQL Server 數(shù)據(jù)庫(kù)的連接,并使用異常處理。
????根據(jù)題目要求,連接 SQL Server 數(shù)據(jù)庫(kù)時(shí)使用的用戶(hù)名為 sa、密碼為 pwdpwd,連接的數(shù)據(jù)庫(kù)為test。
????創(chuàng)建 Windows 窗體應(yīng)用程序,并在窗體上放置一個(gè)按鈕,在按鈕的單擊事件中加入以下代碼。
//編寫(xiě)數(shù)據(jù)庫(kù)連接串string connStr = "Data source=.;Initial Catalog=test;User ID=sa;Password=pwdpwd";//創(chuàng)建SqlConnection的實(shí)例SqlConnection conn = null;try{ conn = new SqlConnection(connStr); //打開(kāi)數(shù)據(jù)庫(kù)連接 conn.Open(); MessageBox.Show("數(shù)據(jù)庫(kù)連接成功!");}catch(Exception ex){ MessageBox.Show("數(shù)據(jù)庫(kù)連接失敗!" + ex.Message);}finally{ if (conn != null) { //關(guān)閉數(shù)據(jù)庫(kù)連接 conn.Close(); }}分析:
????首先是編寫(xiě)數(shù)據(jù)庫(kù)連接串,
?????????就是上面的,使用 Connection 類(lèi)連接數(shù)據(jù)庫(kù)。第2種方法。
????然后創(chuàng)建 SqlConnection 類(lèi)的實(shí)例。
????????之所以先為空,是為了放進(jìn)try中進(jìn)行局部變量轉(zhuǎn)化。
????如果打開(kāi)數(shù)據(jù)庫(kù)成功,就提示消息框提示。
????如果報(bào)錯(cuò),就提示數(shù)據(jù)庫(kù)連接失敗!消息框。
????最后如果數(shù)據(jù)庫(kù)不等于空,所以關(guān)閉數(shù)據(jù)庫(kù)連接.
運(yùn)行結(jié)果:? ?
????????????2.例? ??
????在上一實(shí)例的基礎(chǔ)上使用 using 關(guān)鍵字釋放資源。
????根據(jù)題目要求,省略了 finally 部分的語(yǔ)句,代碼如下。
//編寫(xiě)數(shù)據(jù)庫(kù)連接串string connStr = "Data source=.;Initial Catalog=test;User ID=sa;Password=pwdpwd";//創(chuàng)建SqlConnection的實(shí)例try{ using(SqlConnection conn=new SqlConnection(connStr)) { //打開(kāi)數(shù)據(jù)庫(kù)連接 conn.Open(); MessageBox.Show("數(shù)據(jù)庫(kù)連接成功!"); }}catch(Exception ex){ MessageBox.Show("數(shù)據(jù)庫(kù)連接失敗!" + ex.Message);}分析:
????第6行,使用using關(guān)鍵字。
????????而 using 關(guān)鍵字的用法主要有兩個(gè),一個(gè)是引用命名空間,一個(gè)是創(chuàng)建非托管資源對(duì)象。
????在 .NET 平臺(tái)上資源分為托管資源和非托管資源,托管資源是由 .NET 框架直接提供對(duì)其資源在內(nèi)存中的管理,例如聲明的變量;非托管資源則不能直接由 .NET 框架對(duì)其管理,需要使用代碼來(lái)釋放資源,例如數(shù)據(jù)庫(kù)資源、操作系統(tǒng)資源等。
運(yùn)行結(jié)果:? ?
????事實(shí)上,我并沒(méi)有連接到數(shù)據(jù)庫(kù),所以導(dǎo)致了這個(gè)情況。
????之所以會(huì)這樣,是因?yàn)槲以诎惭b數(shù)據(jù)庫(kù)時(shí),并沒(méi)有SQL server身份驗(yàn)證,而是Windows身份驗(yàn)證,所以連接發(fā)生就屬于第2種下面的另一種。
以 Windows 身份驗(yàn)證方式登錄 SQL Server 數(shù)據(jù)庫(kù)
????將數(shù)據(jù)庫(kù)連接更改如下:
????????Data Source = 服務(wù)器名稱(chēng) \ 數(shù)據(jù)庫(kù)實(shí)例名 ; Initial Catalog = 數(shù)據(jù)庫(kù)名稱(chēng) ; Integrate Security = True
四、SQL Server 數(shù)據(jù)庫(kù)安裝。(因?yàn)榕渲铆h(huán)境很重要)
??? 1.首先百度搜索安裝。
我下載的是這個(gè)
????2.找到這個(gè)
????????打開(kāi)后是這個(gè)
????選擇安裝,并安裝右邊的第一個(gè)“全新SQL Server 獨(dú)立安裝或向現(xiàn)有安裝添加功能”。
????然后再點(diǎn)擊“安裝SQLServer管理工具”,跳轉(zhuǎn)頁(yè)面后,下載SSMS。
????????總之就是這兩個(gè)安裝包,并按照提示進(jìn)行下一步安裝。
????????首先是SQL2019,安裝完后點(diǎn)擊自定義。
????????然后彈出這個(gè):
然后進(jìn)行下一步逐一安裝,唯一注意的是,“數(shù)據(jù)庫(kù)引擎配置”。
????因?yàn)樯鲜霰硎?#xff0c;用Windows身份驗(yàn)證模式不好,所以就用混合模式
不過(guò)我這里因?yàn)槌霈F(xiàn)密碼設(shè)置過(guò)于簡(jiǎn)單的提示,所以就暫時(shí)使用Windows身份驗(yàn)證模式了。
然后就是下一步下一步。
然后再安裝:SSMS-Setup-CHS.exe,也就是數(shù)據(jù)庫(kù)管理工具。
安裝完后,在電腦菜單欄中找到這個(gè),并打開(kāi)。
????然后在菜單欄的文件-連接對(duì)象資源管理器。
????彈出這個(gè)
????服務(wù)器的名稱(chēng)也就確定了。
????而我這時(shí)先使用Windows身份驗(yàn)證進(jìn)行登錄。
????然后是這樣的:
????右鍵這個(gè),點(diǎn)屬性:
????在安全性中,切換“SQL Server和Windeos身份驗(yàn)證模式”。
????然后打開(kāi)數(shù)據(jù)庫(kù)-》安全性-》登錄名-》sa賬號(hào),并雙擊。
????可修改密碼
并且點(diǎn)到狀態(tài),激活啟動(dòng)。
都設(shè)置完后,再點(diǎn)擊重啟一些數(shù)據(jù)庫(kù)。
然后就能使用sa賬戶(hù)訪問(wèn)了。
????之后就是新建數(shù)據(jù)庫(kù):
????????添加數(shù)據(jù)庫(kù)的名稱(chēng)
然后在表中進(jìn)行創(chuàng)建數(shù)據(jù)表。
列名:數(shù)據(jù)類(lèi)型
????然后Ctrl+s保存,并刷新一下,找到保存的表,再填寫(xiě)內(nèi)容。
????右鍵-》編輯前200行,就可以添加了。
????添加內(nèi)容元素,就可以在VS進(jìn)行操作了。
????(大致就這些,雖然有些亂,不過(guò)熟悉了也就發(fā)現(xiàn)沒(méi)什么不同的。)
????首先就是下載軟件,SQL server數(shù)據(jù)庫(kù),和管理工具。
????????(如果習(xí)慣代碼的話,也可以使用指令進(jìn)行數(shù)據(jù)庫(kù)的創(chuàng)建,表的創(chuàng)建和錄入。這里暫時(shí)先不管了,以后再說(shuō)。)
????然后就是配置身份驗(yàn)證,初期不讓用sa,那就先Windows身份進(jìn)入。
????????再通過(guò)“安全性”-》“登錄名”里啟動(dòng)sa,并且修改密碼什么的,再重啟一下數(shù)據(jù)庫(kù)。
????最后就是創(chuàng)建數(shù)據(jù)庫(kù),表的創(chuàng)建和數(shù)據(jù)錄入了。
????????也就是“數(shù)據(jù)庫(kù)”右鍵創(chuàng)建;
????????找到創(chuàng)建的數(shù)據(jù)庫(kù)名-》進(jìn)入“表”,再右鍵創(chuàng)建保存。
????????然后刷新,否則看不到。
????????最后再找到表名,右鍵“編輯前200行”進(jìn)行手動(dòng)錄入。
????????????而表名-》右鍵“設(shè)計(jì)”,可以重新構(gòu)建表的類(lèi)型。
????基本上就是這些吧!然后就是注意數(shù)據(jù)類(lèi)型,以及其他是否為空的條件,從而保證表的完整性,嚴(yán)謹(jǐn)性。
總結(jié)
以上是生活随笔為你收集整理的sqlserver连接字符串_【自学C#】|| 笔记 39 SQL server 连接数据库的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: mysql php 变量赋值,在MySQ
- 下一篇: a4988 脉宽要求_A4982/A49