日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
簡單介紹C#SQLServer

體驗(yàn)SQL語言的事務(wù)機(jī)制

成都創(chuàng)新互聯(lián)公司長期為1000多家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為改則企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè),改則網(wǎng)站改版等技術(shù)服務(wù)。擁有10多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

作為大型的企業(yè)級(jí)數(shù)據(jù)庫,C# SQL Server2000對(duì)事務(wù)提供了很好的支持。我們可以使用SQL語句來定義、提交以及回滾一個(gè)事務(wù)。

如下所示的SQL代碼定義了一個(gè)事務(wù),并且命名為"MyTransaction

這里用到了C# SQL Server2000自帶的示例數(shù)據(jù)庫pubs,提交事務(wù)后,將為所有暢銷計(jì)算機(jī)書籍支付的版稅增加 10%。

打開C# SQL Server2000的查詢分析器,選擇pubs數(shù)據(jù)庫,然后運(yùn)行這段程序,結(jié)果顯而易見。

可是如何在C#程序中運(yùn)行呢?我們記得在普通的SQL查詢中,一般需要把查詢語句賦值給SalCommand.CommandText屬性,這里也就像普通的SQL查詢語句一樣,將這些語句賦給SqlCommand.CommandText屬性即可。要注意的一點(diǎn)是,其中的"GO"語句標(biāo)志著SQL批處理的結(jié)束,編寫SQL腳本是需要的,但是在這里是不必要的。我們可以編寫如下的程序來驗(yàn)證這個(gè)想法:

 
 
 
  1. //TranSql.csusingSystem;  
  2. usingSystem.Data;  
  3. usingSystem.Data.SqlClient;  
  4. namespaceAspcn  
  5. {  
  6. publicclassDbTranSql  
  7. {  
  8. file://將事務(wù)放到SQLServer中執(zhí)行  
  9. publicvoidDoTran()  
  10. {  
  11. file://建立連接并打開  
  12. SqlConnectionmyConn=GetConn();myConn.Open();  
  13. SqlCommandmyComm=newSqlCommand();  
  14. try  
  15. {  
  16. myComm.Connection=myConn;  
  17. myComm.CommandText="DECLARE@TranNameVARCHAR(20)";  
  18. myComm.CommandText+="SELECT@TranName='MyTransaction'";  
  19. myComm.CommandText+="BEGINTRANSACTION@TranName";  
  20. myComm.CommandText+="USEpubs";  
  21. myComm.CommandText+="UPDATEroyschedSETroyalty=royalty*1.10WHEREtitle_idLIKE'Pc%'";  
  22. myComm.CommandText+="COMMITTRANSACTIONMyTransaction";  
  23. myComm.ExecuteNonQuery();  
  24. }  
  25. catch(Exceptionerr)  
  26. {  
  27. thrownewApplicationException("事務(wù)操作出錯(cuò),系統(tǒng)信息:"+err.Message);  
  28. }  
  29. finally  
  30. {  
  31. myConn.Close();  
  32. }  
  33. }  
  34. file://獲取數(shù)據(jù)連接  
  35. privateSqlConnectionGetConn()  
  36. {  
  37. stringstrSql="DataSource=localhost;IntegratedSecurity=SSPI;userid=sa;password=";  
  38. SqlConnectionmyConn=newSqlConnection(strSql);  
  39. returnmyConn;  
  40. }  
  41. }  
  42.  
  43. publicclassTest  
  44. {  
  45. publicstaticvoidMain()  
  46. {  
  47. DbTranSqltranTest=newDbTranSql();  
  48. tranTest.DoTran();  
  49. Console.WriteLine("事務(wù)處理已經(jīng)成功完成。");  
  50. Console.ReadLine();  
  51. }  
  52. }  

注意到其中的SqlCommand對(duì)象myComm,它的CommandText屬性僅僅是前面SQL代碼字符串連接起來即可,當(dāng)然,其中的"GO"語句已經(jīng)全部去掉了。這個(gè)語句就像普通的查詢一樣,程序?qū)QL文本事實(shí)上提交給DBMS去處理了,然后接收返回的結(jié)果(如果有結(jié)果返回的話)。

很自然,我們最后看到了輸出"事務(wù)處理已經(jīng)成功完成",再用企業(yè)管理器查看pubs數(shù)據(jù)庫的roysched表,所有title_id字段以"PC"開頭的書籍的royalty字段的值都增加了0.1倍。

這里,我們并沒有使用ADO.net的事務(wù)處理機(jī)制,而是簡單地將執(zhí)行事務(wù)的SQL語句當(dāng)作普通的查詢來執(zhí)行,因此,事實(shí)上該事務(wù)完全沒有用到.net的相關(guān)特性。
了解.net中的事務(wù)機(jī)制

如你所知,在.net框架中主要有兩個(gè)命名空間(namespace)用于應(yīng)用程序同數(shù)據(jù)庫系統(tǒng)的交互:System.Data.SqlClient和System.Data.OleDb。前者專門用于連接Microsoft公司自己的SQL Server數(shù)據(jù)庫,而后者可以適應(yīng)多種不同的數(shù)據(jù)庫。這兩個(gè)命名空間中都包含有專門用于管理數(shù)據(jù)庫事務(wù)的類,分別是System.Data.SqlClient.SqlTranscation類和System.Data.OleDb.OleDbTranscation類。

就像它們的名字一樣,這兩個(gè)類大部分功能是一樣的,二者之間的主要差別在于它們的連接機(jī)制,前者提供一組直接調(diào)用C# SQL Server 的對(duì)象,而后者使用本機(jī) OLE DB 啟用數(shù)據(jù)訪問。 事實(shí)上,ADO.net 事務(wù)完全在數(shù)據(jù)庫的內(nèi)部處理,且不受 Microsoft 分布式事務(wù)處理協(xié)調(diào)器 (DTC) 或任何其他事務(wù)性機(jī)制的支持。本文將主要介紹System.Data.SqlClient.SqlTranscation類,下面的段落中,除了特別注明,都將使用System.Data.SqlClient.SqlTranscation類。


本文標(biāo)題:簡單介紹C#SQLServer
標(biāo)題網(wǎng)址:http://www.5511xx.com/article/dpsesoe.html