版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C#語(yǔ)言操作SQLServer數(shù)據(jù)庫(kù)在c#程序開發(fā)中經(jīng)常需要和SQL Server數(shù)據(jù)庫(kù)打交道,下面我們就了解一下c#操作SQL Server數(shù)據(jù)庫(kù)的方法:1.概述 首先是為我們的程序添加必要的引用以及一些數(shù)據(jù)成員。因?yàn)槲覀兊某绦蛏婕暗綌?shù)據(jù)庫(kù)的訪問操作,所以必須要運(yùn)用到數(shù)據(jù)提供者Data Provider的對(duì)象。在.Net框架下,我們主要運(yùn)用的數(shù)據(jù)提供者分為兩類,一類是Sql類型的,另一類是OleDb類型的。它們涉及到的命名空間分別為System.Data.SqlClient和System.Data.OleDb。因?yàn)槲覀兊某绦蛟L問的是SQL Server數(shù)據(jù)庫(kù),所以我們運(yùn)用的數(shù)據(jù)提供者對(duì)象應(yīng)為
2、Sql類型的。原因很簡(jiǎn)單,該類型的對(duì)象是專門為SQL Server數(shù)據(jù)庫(kù)而設(shè)計(jì)的,所以性能得到了大大的優(yōu)化。所以,在我們的程序的開始處添加如下一句語(yǔ)句:using System.Data.SqlClient;C#操作SQLServer數(shù)據(jù)庫(kù)的步驟引入命名空間using System.Data.SqlClient;定義連接串定義SqlConnection對(duì)象,并使用Open()方法打開對(duì)數(shù)據(jù)庫(kù)的連接。定義SqlCommand對(duì)象,并指定使用哪個(gè)連接對(duì)象連接到數(shù)據(jù)庫(kù)。定義SqlCommand 對(duì)象的命令類型定義SqlCommand對(duì)象使用何種SQL命令使用SQLCommand對(duì)象的方法獲得數(shù)據(jù)庫(kù)中
3、的數(shù)據(jù)并放入結(jié)果集中。使用SqlDataReader對(duì)象的方法將結(jié)果集中的數(shù)據(jù)讀取出來(lái)加以操作。關(guān)閉數(shù)據(jù)庫(kù)連接,即調(diào)用SqlConnection fangfa de Close()方法。1.定義變量 添加對(duì)System.Data.SqlClient命名空間的引用后,我們接下來(lái)為程序添加一些必要的數(shù)據(jù)成員,這些數(shù)據(jù)成員可以完成一些對(duì)數(shù)據(jù)庫(kù)及其對(duì)象的操作。/ 連接字符串,包含了連接參數(shù)private string ConnectionString = “Data Source=數(shù)據(jù)庫(kù)服務(wù)器的名字;Initial Catalog=數(shù)據(jù)庫(kù)的名字;Integrated Security = SSPI;p
4、rivate string ConnectionString = “Data Source=數(shù)據(jù)庫(kù)服務(wù)器的名字;Initial Catalog=數(shù)據(jù)庫(kù)的名字;Persist Security Info=True;User ID=sa;Password=test”; / 數(shù)據(jù)庫(kù)連接對(duì)象。實(shí)現(xiàn)和數(shù)據(jù)庫(kù)的連接private SqlConnection conn = null; / 數(shù)據(jù)庫(kù)連接命令對(duì)象。指定執(zhí)行的SQL語(yǔ)句private SqlCommand cmd = null; / 存放SQL語(yǔ)句的。private string sql = null; 一、一、SqlConnection類簡(jiǎn)介類簡(jiǎn)
5、介語(yǔ)法語(yǔ)法:publicsealedclassSqlConnection:DbConnection,ICloneable表示表示與與SQLServer數(shù)據(jù)庫(kù)的連接。數(shù)據(jù)庫(kù)的連接。此類不能被繼承。此類不能被繼承。命名空間:命名空間:System.Data.SqlClient程序集:程序集:System.Data在在System.Data.dll中中)兩種構(gòu)造函數(shù):兩種構(gòu)造函數(shù):(1publicSqlConnection()(2publicSqlConnection(stringconnectionString)常用屬性:1、獲取當(dāng)前連接的狀態(tài)-State2、獲取或設(shè)置用于打開 SQL Serve
6、r 數(shù)據(jù)庫(kù)的字符串。-ConnectionString3、獲取要連接的 SQL Server 實(shí)例的名稱。-DataSource4、獲取當(dāng)前數(shù)據(jù)庫(kù)的名稱或連接打開后要使用的數(shù)據(jù)庫(kù)的名稱。-DateBase5、獲取等待連接打開的時(shí)間以秒為單位)。 -ConnectionTimeOut 常用方法常用方法1、打開與數(shù)據(jù)庫(kù)的連接、打開與數(shù)據(jù)庫(kù)的連接-OpenpublicoverridevoidOpen()2、關(guān)閉與數(shù)據(jù)庫(kù)的連接、關(guān)閉與數(shù)據(jù)庫(kù)的連接-ClosepublicoverridevoidClose()此方法是關(guān)閉任何已打開連接的首選方法。此方法是關(guān)閉任何已打開連接的首選方法。應(yīng)用程序可以多次調(diào)用
7、應(yīng)用程序可以多次調(diào)用Close。不會(huì)生成任何異常。不會(huì)生成任何異常。3、創(chuàng)建并返回一個(gè)與、創(chuàng)建并返回一個(gè)與SqlConnection關(guān)聯(lián)的關(guān)聯(lián)的SqlCommand對(duì)象對(duì)象-CreateCommandpublicSqlCommandCreateCommand()1、創(chuàng)建、創(chuàng)建SqlCommand對(duì)象對(duì)象SqlCommandcmd=newSqlCommand(SQLCMD,CON);參數(shù):參數(shù):SQLCMD為為SQL命令語(yǔ)句,命令語(yǔ)句,CON為打開為打開的數(shù)據(jù)庫(kù)連接即打開的的數(shù)據(jù)庫(kù)連接即打開的SqlConnection類類對(duì)象)。對(duì)象)。注:創(chuàng)建注:創(chuàng)建SqlCommand類對(duì)象之前應(yīng)打開類對(duì)象
8、之前應(yīng)打開SqlConnection連接。連接。2、執(zhí)行命令、執(zhí)行命令command類提供的執(zhí)行命令的方法有很多,下面只介紹類提供的執(zhí)行命令的方法有很多,下面只介紹最常用的三個(gè)方法。最常用的三個(gè)方法。ExecuteNonQuery()執(zhí)行命令但不返回任何結(jié)果集唯一執(zhí)行命令但不返回任何結(jié)果集唯一返回語(yǔ)句執(zhí)行所影響的行數(shù)),如果調(diào)用有輸出參數(shù)的返回語(yǔ)句執(zhí)行所影響的行數(shù)),如果調(diào)用有輸出參數(shù)的存儲(chǔ)過程則返回值。(一般用于存儲(chǔ)過程則返回值。(一般用于InsertUpdataDelete等不需要返回結(jié)果集的等不需要返回結(jié)果集的SQL語(yǔ)句)語(yǔ)句)ExecuteReader()執(zhí)行命令,返回一個(gè)類型化的執(zhí)行
9、命令,返回一個(gè)類型化的IDataReader即返回即返回SQL語(yǔ)句執(zhí)行后生成的結(jié)果集)。語(yǔ)句執(zhí)行后生成的結(jié)果集)。一般用于一般用于Select等返回結(jié)果集的等返回結(jié)果集的SQL語(yǔ)句。語(yǔ)句。ExcuteScalar()執(zhí)行命令返回一個(gè)值執(zhí)行查詢,并返回執(zhí)行命令返回一個(gè)值執(zhí)行查詢,并返回查詢所返回的結(jié)果集中第一行的第一列。忽略其他列或查詢所返回的結(jié)果集中第一行的第一列。忽略其他列或行。)行。)例1string ConString = Server=duanyfsqlexpress; + Datebase= FamilyInformationManagement; + Integrated Secr
10、ety =SSPI; SqlConnection con = new SqlConnection(ConString); con.Open(); SqlCommand Cmd = new SqlCommand(DELETE * FROM User WHERE UserID =123, con); Cmd.ExecuteNonQuery(); con.Close();3、常用的屬性、常用的屬性CommandText設(shè)置要對(duì)執(zhí)行的設(shè)置要對(duì)執(zhí)行的SQL語(yǔ)句、表名或存儲(chǔ)過程語(yǔ)句、表名或存儲(chǔ)過程名。默認(rèn)值為空字符串。(如果名。默認(rèn)值為空字符串。(如果CommandType屬性為屬性為StoredProc
11、edure或或TableDirect時(shí),時(shí),CommandText中表中表名或存儲(chǔ)過程名如果包含特殊字符則用轉(zhuǎn)義符語(yǔ)法設(shè)置)。名或存儲(chǔ)過程名如果包含特殊字符則用轉(zhuǎn)義符語(yǔ)法設(shè)置)。CommandType設(shè)置如何解釋設(shè)置如何解釋CommandText值即設(shè)置值即設(shè)置CommandText所代表的含義)。有三個(gè)選項(xiàng)所代表的含義)。有三個(gè)選項(xiàng)StoredProcedure存儲(chǔ)過程名,存儲(chǔ)過程名,TableDirect表名,表名,TextSQL文本命令),默認(rèn)為文本命令),默認(rèn)為Text。CommandTimeout獲取或設(shè)置等待命令執(zhí)行的時(shí)間以秒獲取或設(shè)置等待命令執(zhí)行的時(shí)間以秒為單位)。默認(rèn)為為單位)
12、。默認(rèn)為30秒。(秒。(0表示無(wú)限制,會(huì)無(wú)限期地表示無(wú)限制,會(huì)無(wú)限期地等待執(zhí)行命令)。(當(dāng)對(duì)上下文連接要用連接字符串中等待執(zhí)行命令)。(當(dāng)對(duì)上下文連接要用連接字符串中的的“contextconnection=true打開的打開的SqlConnection執(zhí)行命令時(shí),執(zhí)行命令時(shí),CommandTimeout將不起作用)。將不起作用)。Parameters設(shè)置設(shè)置SQL語(yǔ)句或存儲(chǔ)過程的參數(shù)。(如果參數(shù)與語(yǔ)句或存儲(chǔ)過程的參數(shù)。(如果參數(shù)與賦的值不匹配則會(huì)報(bào)錯(cuò))。賦的值不匹配則會(huì)報(bào)錯(cuò))。例例2(使用CommandText 屬性重寫例1) string ConString = Server=duanyf
13、sqlexpress; + Datebase= FamilyInformationManagement; + Integrated Secrety =SSPI“; SqlConnection con = new SqlConnection(ConString); con.Open(); SqlCommand Cmd = new SqlCommand(); Cmd.CommandText = DELETE * FROM User WHERE UserID =123; Cmd.CommandType=CommandType.Text; /默認(rèn)為Text,此行可以不用 Cmd.CommandTime
14、out = 15; Cmd.ExecuteNonQuery(); con.Close(); 例例3轉(zhuǎn)義符語(yǔ)法設(shè)置 重寫例1(1使用new SqlParameterint UserID=123; string ConString = Server=duanyfsqlexpress; + Datebase= FamilyInformationManagement; + Integrated Secrety =SSPI; SqlConnection con = new SqlConnection(ConString); con.Open(); SqlCommand Cmd = new SqlComm
15、and(DELETE * FROM User WHERE UserName =UserName, Con); SqlParameter Parm = new SqlParameter(UserID, SqlDbType.Int); Parm.Value = UserID; Cmd.Parameters.Add(SqlParm); Cmd.ExecuteNonQuery(); con.Close();(2不使用不使用newSqlParameterintUserID=123;stringConString=Server=duanyfsqlexpress;+Datebase=FamilyInform
16、ationManagement;+IntegratedSecrety=SSPI;SqlConnectioncon=newSqlConnection(ConString);con.Open();SqlCommandCmd=newSqlCommand(DELETE*FROMUserHEREUserName=UserName,Con);Cmd.Parameters.Add(UserID,SqlDbType.Int);Cmd.ParametersUserID.Value=UserID;Cmd.Parameters.Add(SqlParm);Cmd.ExecuteNonQuery();con.Close
17、();理解SqlCommand對(duì)象的 ExecuteReader()和ExecuteNonQuery()方法ExecuteReader():將數(shù)據(jù)庫(kù)中的數(shù)據(jù)讀取到結(jié)果集中,返回結(jié)果類型為: SqlDataReader這個(gè)類的類型結(jié)果ExecuteNonQuery ()返回sql命令執(zhí)行時(shí)所影響的行數(shù),返回結(jié)果類型為intSqlDataReader類:用來(lái)保存有SqlCommand對(duì)象從數(shù)據(jù)庫(kù)端讀取到的數(shù)據(jù)集。結(jié)合實(shí)例理解SqlDataReader 的Read()方法、GetValue()方法和GetOrdinal()方法完整例子代碼如下:string StrUserName; string S
18、trPassword; string StrEmployID; string SQLCommand = select * from Tab_Account;string Str_Connection = Data Source=FIREFOXSQLEXPRESS;Initial Catalog=mydatabase;Integrated Security=True;SqlConnection Sql_Connection = newSqlConnection(Str_Connection);Sql_Connection.Open();SqlCommand Sql_Command = new SqlCommand();Sql_Command.Connection = Sql_Connection;/Sql_Command = Sql_Connection.CreateCo
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 線程安全自動(dòng)檢測(cè)技術(shù)-洞察分析
- 醫(yī)生婦產(chǎn)科申報(bào)副高職稱工作總結(jié)(7篇)
- 《服裝零售業(yè)概況》課件
- CRM在客戶信息管理中的價(jià)值
- 以人為本家庭急救知識(shí)與技能的普及與推廣
- 創(chuàng)新創(chuàng)業(yè)教育推廣提升學(xué)生就業(yè)競(jìng)爭(zhēng)力的途徑
- 2025房地產(chǎn)銷售代理合同
- 羰基二咪唑項(xiàng)目可行性研究報(bào)告
- 2025年鑄造輔助材料項(xiàng)目提案報(bào)告
- 獵槍刷行業(yè)行業(yè)發(fā)展趨勢(shì)及投資戰(zhàn)略研究分析報(bào)告
- 大一無(wú)機(jī)化學(xué)期末考試試題
- NB/T 10727-2021煤礦膏體充填開采技術(shù)規(guī)范
- YY/T 0698.3-2009最終滅菌醫(yī)療器械包裝材料第3部分:紙袋(YY/T 0698.4所規(guī)定)、組合袋和卷材(YY/T 0698.5所規(guī)定)生產(chǎn)用紙要求和試驗(yàn)方法
- GB/T 16989-2013土工合成材料接頭/接縫寬條拉伸試驗(yàn)方法
- GA 1517-2018金銀珠寶營(yíng)業(yè)場(chǎng)所安全防范要求
- 評(píng)標(biāo)專家?guī)煜到y(tǒng)系統(tǒng)總體建設(shè)方案參考模板
- 醬香型白酒生產(chǎn)工藝課件
- 《證券期貨經(jīng)營(yíng)機(jī)構(gòu)及其工作人員廉潔從業(yè)規(guī)定》解讀 100分
- 江蘇省質(zhì)量通病防治手冊(cè)
- 氣相色譜法分析(甲醇)原始記錄
- DB63∕T 2013-2022 公路養(yǎng)護(hù)工程預(yù)算定額
評(píng)論
0/150
提交評(píng)論