版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、C#語言操作SQLServer數(shù)據(jù)庫在c#程序開發(fā)中經(jīng)常需要和SQL Server數(shù)據(jù)庫打交道,下面我們就了解一下c#操作SQL Server數(shù)據(jù)庫的方法:1.概述 首先是為我們的程序添加必要的引用以及一些數(shù)據(jù)成員。因為我們的程序涉及到數(shù)據(jù)庫的訪問操作,所以必須要運用到數(shù)據(jù)提供者Data Provider的對象。在.Net框架下,我們主要運用的數(shù)據(jù)提供者分為兩類,一類是Sql類型的,另一類是OleDb類型的。它們涉及到的命名空間分別為System.Data.SqlClient和System.Data.OleDb。因為我們的程序訪問的是SQL Server數(shù)據(jù)庫,所以我們運用的數(shù)據(jù)提供者對象應(yīng)為
2、Sql類型的。原因很簡單,該類型的對象是專門為SQL Server數(shù)據(jù)庫而設(shè)計的,所以性能得到了大大的優(yōu)化。所以,在我們的程序的開始處添加如下一句語句:using System.Data.SqlClient;C#操作SQLServer數(shù)據(jù)庫的步驟引入命名空間using System.Data.SqlClient;定義連接串定義SqlConnection對象,并使用Open()方法打開對數(shù)據(jù)庫的連接。定義SqlCommand對象,并指定使用哪個連接對象連接到數(shù)據(jù)庫。定義SqlCommand 對象的命令類型定義SqlCommand對象使用何種SQL命令使用SQLCommand對象的方法獲得數(shù)據(jù)庫中
3、的數(shù)據(jù)并放入結(jié)果集中。使用SqlDataReader對象的方法將結(jié)果集中的數(shù)據(jù)讀取出來加以操作。關(guān)閉數(shù)據(jù)庫連接,即調(diào)用SqlConnection fangfa de Close()方法。1.定義變量 添加對System.Data.SqlClient命名空間的引用后,我們接下來為程序添加一些必要的數(shù)據(jù)成員,這些數(shù)據(jù)成員可以完成一些對數(shù)據(jù)庫及其對象的操作。/ 連接字符串,包含了連接參數(shù)private string ConnectionString = “Data Source=數(shù)據(jù)庫服務(wù)器的名字;Initial Catalog=數(shù)據(jù)庫的名字;Integrated Security = SSPI;p
4、rivate string ConnectionString = “Data Source=數(shù)據(jù)庫服務(wù)器的名字;Initial Catalog=數(shù)據(jù)庫的名字;Persist Security Info=True;User ID=sa;Password=test”; / 數(shù)據(jù)庫連接對象。實現(xiàn)和數(shù)據(jù)庫的連接private SqlConnection conn = null; / 數(shù)據(jù)庫連接命令對象。指定執(zhí)行的SQL語句private SqlCommand cmd = null; / 存放SQL語句的。private string sql = null; 一、一、SqlConnection類簡介類簡
5、介語法語法:publicsealedclassSqlConnection:DbConnection,ICloneable表示表示與與SQLServer數(shù)據(jù)庫的連接。數(shù)據(jù)庫的連接。此類不能被繼承。此類不能被繼承。命名空間:命名空間: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ù)庫的字符串。-ConnectionString3、獲取要連接的 SQL Server 實例的名稱。-DataSource4、獲取當(dāng)前數(shù)據(jù)庫的名稱或連接打開后要使用的數(shù)據(jù)庫的名稱。-DateBase5、獲取等待連接打開的時間以秒為單位)。 -ConnectionTimeOut 常用方法常用方法1、打開與數(shù)據(jù)庫的連接、打開與數(shù)據(jù)庫的連接-OpenpublicoverridevoidOpen()2、關(guān)閉與數(shù)據(jù)庫的連接、關(guān)閉與數(shù)據(jù)庫的連接-ClosepublicoverridevoidClose()此方法是關(guān)閉任何已打開連接的首選方法。此方法是關(guān)閉任何已打開連接的首選方法。應(yīng)用程序可以多次調(diào)用
7、應(yīng)用程序可以多次調(diào)用Close。不會生成任何異常。不會生成任何異常。3、創(chuàng)建并返回一個與、創(chuàng)建并返回一個與SqlConnection關(guān)聯(lián)的關(guān)聯(lián)的SqlCommand對象對象-CreateCommandpublicSqlCommandCreateCommand()1、創(chuàng)建、創(chuàng)建SqlCommand對象對象SqlCommandcmd=newSqlCommand(SQLCMD,CON);參數(shù):參數(shù):SQLCMD為為SQL命令語句,命令語句,CON為打開為打開的數(shù)據(jù)庫連接即打開的的數(shù)據(jù)庫連接即打開的SqlConnection類類對象)。對象)。注:創(chuàng)建注:創(chuàng)建SqlCommand類對象之前應(yīng)打開類對象
8、之前應(yīng)打開SqlConnection連接。連接。2、執(zhí)行命令、執(zhí)行命令command類提供的執(zhí)行命令的方法有很多,下面只介紹類提供的執(zhí)行命令的方法有很多,下面只介紹最常用的三個方法。最常用的三個方法。ExecuteNonQuery()執(zhí)行命令但不返回任何結(jié)果集唯一執(zhí)行命令但不返回任何結(jié)果集唯一返回語句執(zhí)行所影響的行數(shù)),如果調(diào)用有輸出參數(shù)的返回語句執(zhí)行所影響的行數(shù)),如果調(diào)用有輸出參數(shù)的存儲過程則返回值。(一般用于存儲過程則返回值。(一般用于InsertUpdataDelete等不需要返回結(jié)果集的等不需要返回結(jié)果集的SQL語句)語句)ExecuteReader()執(zhí)行命令,返回一個類型化的執(zhí)行
9、命令,返回一個類型化的IDataReader即返回即返回SQL語句執(zhí)行后生成的結(jié)果集)。語句執(zhí)行后生成的結(jié)果集)。一般用于一般用于Select等返回結(jié)果集的等返回結(jié)果集的SQL語句。語句。ExcuteScalar()執(zhí)行命令返回一個值執(zhí)行查詢,并返回執(zhí)行命令返回一個值執(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è)置要對執(zhí)行的設(shè)置要對執(zhí)行的SQL語句、表名或存儲過程語句、表名或存儲過程名。默認(rèn)值為空字符串。(如果名。默認(rèn)值為空字符串。(如果CommandType屬性為屬性為StoredProc
11、edure或或TableDirect時,時,CommandText中表中表名或存儲過程名如果包含特殊字符則用轉(zhuǎn)義符語法設(shè)置)。名或存儲過程名如果包含特殊字符則用轉(zhuǎn)義符語法設(shè)置)。CommandType設(shè)置如何解釋設(shè)置如何解釋CommandText值即設(shè)置值即設(shè)置CommandText所代表的含義)。有三個選項所代表的含義)。有三個選項StoredProcedure存儲過程名,存儲過程名,TableDirect表名,表名,TextSQL文本命令),默認(rèn)為文本命令),默認(rèn)為Text。CommandTimeout獲取或設(shè)置等待命令執(zhí)行的時間以秒獲取或設(shè)置等待命令執(zhí)行的時間以秒為單位)。默認(rèn)為為單位)
12、。默認(rèn)為30秒。(秒。(0表示無限制,會無限期地表示無限制,會無限期地等待執(zhí)行命令)。(當(dāng)對上下文連接要用連接字符串中等待執(zhí)行命令)。(當(dāng)對上下文連接要用連接字符串中的的“contextconnection=true打開的打開的SqlConnection執(zhí)行命令時,執(zhí)行命令時,CommandTimeout將不起作用)。將不起作用)。Parameters設(shè)置設(shè)置SQL語句或存儲過程的參數(shù)。(如果參數(shù)與語句或存儲過程的參數(shù)。(如果參數(shù)與賦的值不匹配則會報錯)。賦的值不匹配則會報錯)。例例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)義符語法設(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對象的 ExecuteReader()和ExecuteNonQuery()方法ExecuteReader():將數(shù)據(jù)庫中的數(shù)據(jù)讀取到結(jié)果集中,返回結(jié)果類型為: SqlDataReader這個類的類型結(jié)果ExecuteNonQuery ()返回sql命令執(zhí)行時所影響的行數(shù),返回結(jié)果類型為intSqlDataReader類:用來保存有SqlCommand對象從數(shù)據(jù)庫端讀取到的數(shù)據(jù)集。結(jié)合實例理解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. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 小學(xué)一年級上冊數(shù)學(xué)教學(xué)反思5篇
- 贊助合同模板五篇
- 汽車試用買賣合同范本
- 合作拍攝故事片協(xié)議書
- 2025年全球及中國聚乙二醇類醫(yī)用密封劑行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年全球及中國配藥注射針行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 洗衣店裝修解約協(xié)議書
- 裝修工程成品保護(hù)協(xié)議
- 2025幼兒園教師師德師風(fēng)自查報告范文
- 2025年度個人知識產(chǎn)權(quán)擔(dān)保合同樣本
- 《鋁及鋁合金產(chǎn)品殘余應(yīng)力評價方法》
- 電除顫操作流程圖
- 湖北教育出版社三年級下冊信息技術(shù)教案
- 設(shè)計基礎(chǔ)全套教學(xué)課件
- IATF16949包裝方案評審表
- 人教版八年級美術(shù)下冊全冊完整課件
- 1 運行方案說明
- 北京房地產(chǎn)典當(dāng)合同
- PHILIPS HeartStart XL+操作培訓(xùn)課件
- 檔案工作管理情況自查表
- 蘇科版九年級(初三)物理下冊全套課件
評論
0/150
提交評論