vb.net事務(wù)管理的簡(jiǎn)單介紹

在VB中,怎樣對(duì)SQL進(jìn)行事務(wù)處理

事務(wù)處理是在數(shù)據(jù)處理時(shí)經(jīng)常遇到的問(wèn)題,經(jīng)常用到的方法有以下3種總結(jié)整理如下:

讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來(lái)自于我們對(duì)這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過(guò)有效、簡(jiǎn)單的方式提供給客戶,將通過(guò)不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長(zhǎng)期合作伙伴,公司提供的服務(wù)項(xiàng)目有:國(guó)際域名空間、雅安服務(wù)器托管、營(yíng)銷軟件、網(wǎng)站建設(shè)、彭山網(wǎng)站維護(hù)、網(wǎng)站推廣。

方法1:直接寫入到sql?中

在存儲(chǔ)過(guò)程中使用?BEGIN?TRANS,?COMMIT?TRANS,?ROLLBACK?TRANS?實(shí)現(xiàn)

begin?trans

declare?@orderDetailsError?int,@procuntError?int

delete?from?[order?details]?where?productid=42

select?@orderDetailsError?=@@error

delete?from?products?where?productid=42

select?@procuntError=@@error

if(@orderDetailsError?=0?and?@procuntError=0)

COMMIT?TRANS

else

ROLLBACK?TRANS

優(yōu)點(diǎn):

所有事務(wù)邏輯包含在一個(gè)單獨(dú)的調(diào)用中

擁有運(yùn)行一個(gè)事務(wù)的最佳性能

獨(dú)立于應(yīng)用程序

限制:

事務(wù)上下文僅存在于數(shù)據(jù)庫(kù)調(diào)用中

數(shù)據(jù)庫(kù)代碼與數(shù)據(jù)庫(kù)系統(tǒng)有關(guān)

方法2?:使用ADO.NET?實(shí)現(xiàn)?

使用ADO.NET?實(shí)現(xiàn),使用這種方式的優(yōu)點(diǎn)是可以在中間層來(lái)管理事務(wù),當(dāng)然你也可以選擇在數(shù)據(jù)層來(lái)實(shí)現(xiàn)。

SqlConnection?和OleDbConnection??對(duì)象有一個(gè)?BeginTransaction?方法,它可以返回?SqlTransaction

或者OleDbTransaction?對(duì)象。而且這個(gè)對(duì)象有?Commit?和?Rollback?方法來(lái)管理事務(wù)

SqlConnection?sqlConnection?=?new?SqlConnection("workstation?id=WEIXIAOPING;packet?size=4096;user?id=sa;initial?catalog=Northwind;persist?security?info=False");

sqlConnection.Open();

SqlTransaction??myTrans?=?sqlConnection.BeginTransaction();

SqlCommand?sqlInsertCommand?=?new?SqlCommand();

sqlInsertCommand.Connection?=?sqlConnection

sqlInsertCommand.Transaction=myTrans;

try{

sqlInsertCommand.CommandText="insert?into?tbTree(Context,ParentID)?values('北京',1)";

sqlInsertCommand.ExecuteNonQuery();

sqlInsertCommand.CommandText="insert?into?tbTree(Context,ParentID)?values('上海',1)";

sqlInsertCommand.ExecuteNonQuery();

myTrans.Commit();

}catch(Exception?ex)

{

myTrans.Rollback();

}

finally

{

sqlConnection.Close();

}

優(yōu)點(diǎn):

簡(jiǎn)單性

和數(shù)據(jù)據(jù)事務(wù)差不多的快

獨(dú)立于數(shù)據(jù)庫(kù),不同數(shù)據(jù)庫(kù)的專有代碼被隱藏了

缺點(diǎn):

事務(wù)不能跨越多個(gè)數(shù)據(jù)庫(kù)連接

事務(wù)執(zhí)行在數(shù)據(jù)庫(kù)連接層上,所以需要在事務(wù)過(guò)程中維護(hù)一個(gè)數(shù)據(jù)庫(kù)連接

ADO.NET分布事務(wù)也可以跨越多個(gè)數(shù)據(jù)庫(kù),但是其中一個(gè)SQL?SERVER?數(shù)據(jù)庫(kù)的話,通過(guò)用SQL?SERVER連接服務(wù)器連接到別的數(shù)據(jù)庫(kù),但是如果是在DB2和Orcal之間就不可以。

以上兩種事務(wù)是經(jīng)常用到的事務(wù)處理方法。

方法3??COM+事務(wù)(分布式事務(wù))

.NET?Framework?依靠?MTS/COM+?服務(wù)來(lái)支持自動(dòng)事務(wù)。COM+?使用?Microsoft?Distributed?Transaction?Coordinator?(DTC)?作為事務(wù)管理器和事務(wù)協(xié)調(diào)器在分布式環(huán)境中運(yùn)行事務(wù)。

這樣可使?.NET?應(yīng)用程序運(yùn)行跨多個(gè)資源結(jié)合不同操作(例如,將定單插入?SQL?Server?數(shù)據(jù)庫(kù)、將消息寫入?Microsoft?消息隊(duì)列?(MSMQ)?隊(duì)列、以及從?Oracle?數(shù)據(jù)庫(kù)檢索數(shù)據(jù))

的事務(wù)。

COM+事務(wù)處理的類必須繼承System.EnterpriseServices.ServicedComponent,其實(shí)web?service就是繼承System.EnterpriseServices.ServicedComponent,所以web?service也支持

COM+事務(wù)。

定義一個(gè)COM+事務(wù)處理的類

[Transaction(TransactionOption.Required)]

public?class?DataAccess:System.EnterpriseServices.ServicedComponent

{

}

TransactionOption枚舉類型支持5個(gè)COM+值(Disabled,NotSupported,Required,RequiresNew,Supported)

Disabled??????忽略當(dāng)前上下文中的任何事務(wù)。

NotSupported??使用非受控事務(wù)在上下文中創(chuàng)建組件。

Required??????如果事務(wù)存在則共享事務(wù),并且如有必要?jiǎng)t創(chuàng)建新事務(wù)。

RequiresNew???使用新事務(wù)創(chuàng)建組件,而與當(dāng)前上下文的狀態(tài)無(wú)關(guān)。

Supported?????如果事務(wù)存在,則共享該事務(wù)。

一般來(lái)說(shuō)COM+中的組件需要Required?或Supported。當(dāng)組件用于記錄或查帳時(shí)RequiresNew?很有用,因?yàn)榻M件應(yīng)該與活動(dòng)中其他事務(wù)處理的提交或回滾隔離開來(lái)。

派生類可以重載基類的任意屬性。如DataAccess選用Required,派生類仍然可以重載并指定RequiresNew或其他值。

COM+事務(wù)有手動(dòng)處理和自動(dòng)處理,自動(dòng)處理就是在所需要自動(dòng)處理的方法前加上[AutoComplete],根據(jù)方法的正?;驋伋霎惓Q定提交或回滾。

手動(dòng)處理就是調(diào)用ContextUtil類中EnableCommit,SetComplete,SetAbort方法。

public?string??testTransaction()

{

try

{

ContextUtil.EnableCommit();

InsertARecord1();

InsertARecord2();

ContextUtil.SetComplete();

return?"succeed!";

}

catch(Exception?ex)

{

ContextUtil.SetAbort();

return?"failed!";

}

}

public?void?InsertARecord1()

{

string?strconn="workstation?id=WEIXIAOPING;packet?size=4096;user?id=sa;initial?catalog=Northwind;persist?security?info=False";

SqlConnection?conn=new?SqlConnection(strconn);

conn.Open();

SqlCommand?command=new?SqlCommand("insert?into?tbTree(Context,ParentID)?values('北京',1)",conn);

command.ExecuteNonQuery();

conn.Close();

}

public?void?InsertARecord2()

{

string?strconn="workstation?id=WEIXIAOPING;packet?size=4096;user?id=sa;initial?catalog=Northwind;persist?security?info=False";

SqlConnection?conn=new?SqlConnection(strconn);

conn.Open();

SqlCommand?command=new?SqlCommand("insert?into?tbTree(Context,ParentID)?values('上海',1)",conn);

command.ExecuteNonQuery();

conn.Close();

}

在需要事務(wù)跨?MSMQ?和其他可識(shí)別事務(wù)的資源(例如,SQL?Server?數(shù)據(jù)庫(kù))運(yùn)行的系統(tǒng)中,只能使用?DTC?或?COM+?事務(wù),除此之外沒有其他選擇。DTC?協(xié)調(diào)參與分布式事務(wù)的所有資源管理器, ?也管理與事務(wù)相關(guān)的操作。

這種做法的缺點(diǎn)是,由于存在?DTC?和?COM?互操作性開銷,導(dǎo)致性能降低。

COM+事務(wù)處理的類必須強(qiáng)命名。

誰(shuí)能給我講講收發(fā)文管理系統(tǒng)是什么哦

基于ASP的收發(fā)文管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)

傳統(tǒng)的手工辦公方式已經(jīng)無(wú)法滿足現(xiàn)代辦公的需求,收發(fā)文管理系統(tǒng)作為提高工作效率、規(guī)范辦公制度,增強(qiáng)辦公的透明性,實(shí)現(xiàn)信息、文檔資源的統(tǒng)一管理,方便領(lǐng)導(dǎo)決策,逐步實(shí)現(xiàn)無(wú)紙化辦公的重要工具,越來(lái)越受到人們的重視。

我們選擇B/S三層結(jié)構(gòu),后臺(tái)數(shù)據(jù)庫(kù)采用SQL Server,WEB服務(wù)器運(yùn)行微軟的IIS,以ASP(Active Server Pages)作為開發(fā)工具,客戶端用IE瀏覽器。

B/S模式體系結(jié)構(gòu)概述

B/S模式是指在TCP/IP的支持下,以HTTP為傳輸協(xié)議,客戶端通過(guò)Browser訪問(wèn)Web服務(wù)器以及與之相連的后臺(tái)數(shù)據(jù)庫(kù)的技術(shù)及體系結(jié)構(gòu)。它由瀏覽器、Web服務(wù)器、應(yīng)用服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器組成(圖1)。B/S模式突破了傳統(tǒng)的文件共享及C/S模式的限制,實(shí)現(xiàn)了更大程度的信息共享,任何用戶只要通過(guò)瀏覽器即可訪問(wèn)數(shù)據(jù)庫(kù),從而克服了時(shí)間和空間的限制。

B/S模式的工作原理是:客戶端的瀏覽器通過(guò)URL訪問(wèn)Web服務(wù)器,Web服務(wù)器請(qǐng)求數(shù)據(jù)庫(kù)服務(wù)器,并將獲得的結(jié)果以HTML形式返回客戶端瀏覽器。

功能模塊

基于收發(fā)文檔一體化的實(shí)現(xiàn)機(jī)制,可將系統(tǒng)分為如下幾個(gè)子模塊。

(1) 系統(tǒng)管理

作為系統(tǒng)管理員,他可以對(duì)整個(gè)系統(tǒng)進(jìn)行維護(hù),包括人員維護(hù)、科室維護(hù)、模塊維護(hù)、人員職能維護(hù)、人員職務(wù)維護(hù)、用戶權(quán)限維護(hù)、用戶口令維護(hù)、系統(tǒng)配置項(xiàng)的維護(hù)另外還可以對(duì)全局公告欄的類別進(jìn)行維護(hù)。

(2) 發(fā)文管理

發(fā)文管理是一個(gè)單位對(duì)具有約束能力文件形成過(guò)程的一種管理。如執(zhí)行發(fā)文擬稿、核稿、會(huì)審、會(huì)簽、簽發(fā)、文書打印、批閱流轉(zhuǎn)、歸檔等管理工作。文件送閱和批復(fù)完全在計(jì)算機(jī)網(wǎng)絡(luò)上完成,所有的工作流程可以由用戶自定義,所有的送交批閱痕跡,修改痕跡,操作時(shí)間和操作人都被詳細(xì)保留。同時(shí),對(duì)發(fā)文系統(tǒng)還提供全文檢索、條件檢索等功能。

它主要的用于像公司規(guī)章制度的形成、檔案室制度的形成、財(cái)務(wù)室制度的形成、干部任免文件的形成、職工獎(jiǎng)罰規(guī)定的形成、庫(kù)存管理制度的形成、安全生產(chǎn)制度的形成、及其它對(duì)所有人都具有約束性的文件的形成過(guò)程。

圖(2)是整個(gè)發(fā)文的流程圖,用戶可以根據(jù)需要選擇其中的某些步驟來(lái)完成發(fā)文的管理。

圖2

(3) 收文管理

收文管理主要對(duì)外來(lái)公文進(jìn)行登記和處理。主要用于登記像稅務(wù)局發(fā)來(lái)的文件、公安部門發(fā)來(lái)的文件、總公司發(fā)來(lái)的文件行業(yè)主管部門來(lái)文的處理過(guò)程、協(xié)作單位發(fā)來(lái)的文件處理過(guò)程、兄弟單位發(fā)來(lái)的文件處理過(guò)程、及其它外來(lái)的公文文件的處理過(guò)程。

主要的處理過(guò)程有:收文登記、主任擬辦、領(lǐng)導(dǎo)批示、處室承辦、傳閱、送交歸檔等功能。在領(lǐng)導(dǎo)批辦界面可以將文件送往更高一級(jí)的領(lǐng)導(dǎo)進(jìn)行審批,到底由哪些處室承辦,送交給哪些處室由最高領(lǐng)導(dǎo)決定。管理人員可以通過(guò)“收文查詢操作”對(duì)收文處理全過(guò)程進(jìn)行跟蹤與監(jiān)督。

對(duì)辦理完畢的收文系統(tǒng)還提供全文檢索、條件檢索、統(tǒng)計(jì)等功能。

圖(3)是整個(gè)收文的流程圖,用戶可以根據(jù)需要選擇其中的某些步驟來(lái)完成收文的管理。

圖3

(4) 檔案管理

對(duì)本部門或其它部門發(fā)送的文件進(jìn)行接收,然后將文件進(jìn)行組卷(將文件組入某一案卷中)、移卷(將某案卷中的文件移動(dòng)至其它案卷)、移出(將某案卷中的文件移出案卷)。對(duì)于未立卷的收發(fā)文文件,可以組卷。對(duì)于檔案可以進(jìn)行封卷,拆卷,銷毀案卷,對(duì)封卷的案卷或未封卷的案卷都可以進(jìn)行借閱和查詢管理,您可以在此進(jìn)行檔案的借閱、歸還。還可以對(duì)檔案的閱讀權(quán)限進(jìn)行有效地分配管理。

相關(guān)的實(shí)現(xiàn)技術(shù)

1、典型數(shù)據(jù)表的設(shè)計(jì)

在收發(fā)文管理系統(tǒng)中,任意收文或發(fā)文文件都對(duì)應(yīng)一個(gè)默認(rèn)流程(事先已經(jīng)定義好了),文件按照流程中指定的步驟逐次向下流轉(zhuǎn)。以某收文流程為例有:收文登記—〉主任擬辦—〉領(lǐng)導(dǎo)批辦—〉處室承辦—〉送交歸檔。為了對(duì)文件進(jìn)行實(shí)時(shí)跟蹤,及時(shí)監(jiān)督它的流向進(jìn)程或者考察在某些階段處理的詳細(xì)情況,這就要求我們提供兩個(gè)重要的數(shù)據(jù)表,在本系統(tǒng)中為數(shù)據(jù)表gw_mrlc和數(shù)據(jù)表gw_cllc。

其中,gw_mrlc(wdlx,lcmc,ry,xh,clm,clr)記錄了系統(tǒng)中用到的各默認(rèn)流程的信息。Wdlx指文檔類型,收文或者發(fā)文;lcmc指流程名稱;ry指定義該默認(rèn)流程的人員;xh對(duì)應(yīng)默認(rèn)流程中各步驟的順序號(hào),它有大小之分,小的則表示步驟在前,系統(tǒng)將先執(zhí)行;clm對(duì)應(yīng)默認(rèn)流程中各步驟的名稱;clr對(duì)應(yīng)默認(rèn)流程中各步驟的處理人員。

Gw_mrlc僅是記錄了各流程的信息,還需要gw_cllc(lxh,lcmc,xh,clr,jbrq,clrq,clyj,zt,wjm)來(lái)跟蹤文件在流程中的執(zhí)行狀況。對(duì)于任意收發(fā)文文件在系統(tǒng)中都會(huì)有各自唯一的流程與之一一對(duì)應(yīng),lxh則記錄了該流程的序列號(hào);lcmc,xh,clr同上所定義;jbrq,clrq,clyj,zt,wjm都是針對(duì)該流程中順序號(hào)為xh的各個(gè)處理步驟而言,jbrq指上一個(gè)步驟處理完畢提交過(guò)來(lái)時(shí)的日期;clrq指當(dāng)前步驟處理完畢時(shí)的日期;clyj指當(dāng)前步驟的處理意見;zt指當(dāng)前步驟的處理狀態(tài),已經(jīng)處理還是尚未處理,以方便文件的實(shí)時(shí)跟蹤;wjm則記錄了文件的正文內(nèi)容和在流轉(zhuǎn)過(guò)程中文件的修改痕跡,具體的可以通過(guò)文件上傳功能來(lái)實(shí)現(xiàn)。

2、使用Session進(jìn)行登錄驗(yàn)證

ASP代碼使用表單實(shí)現(xiàn)交互,而相應(yīng)的內(nèi)容會(huì)反映在瀏覽器的地址欄中,如果不采用適當(dāng)?shù)陌踩胧?,只要記下這些內(nèi)容,就可以繞過(guò)驗(yàn)證直接進(jìn)入某一頁(yè)面。例如在瀏覽器中敲入“...xx.asp?flag=1”,即可不經(jīng)過(guò)表單頁(yè)面直接進(jìn)入滿足“flag=1”條件的頁(yè)面。

為防止未經(jīng)注冊(cè)的用戶繞過(guò)注冊(cè)界面直接進(jìn)入應(yīng)用系統(tǒng),我們采用Session對(duì)象進(jìn)行注冊(cè)驗(yàn)證。例如,我們制作了下面的注冊(cè)頁(yè)面。

%’讀取用戶登錄的信息

Luser=ltrim(Request("User"))

Lpass=Request("Pass")

’檢驗(yàn)帳號(hào)和密碼是否正確

if Luser=rs(“userid”) and Lpass= rs(“password”) then

Session("sysuser")=Luser ’使用Session對(duì)象進(jìn)行用戶登錄驗(yàn)證

else

response.write “您的輸入不正確!”

response.end

end if

%

在應(yīng)用系統(tǒng)的其他WEB頁(yè),首先要進(jìn)行Session對(duì)象的驗(yàn)證。如果你未通過(guò)用戶登錄界面,那么Session("sysuser")就為空值,你將無(wú)法使用系統(tǒng)提供的任何功能,除非你是合法用戶才可,這樣就在一定程度上保證了系統(tǒng)的安全性。其驗(yàn)證代碼如下:

%

if session("sysuser ")="" then

response.write("對(duì)不起,你還沒有a href='../login.asp' target='_top'登錄/a。")

else

end if

%

3、對(duì)ASP頁(yè)面進(jìn)行加密

為有效的防止ASP源代碼泄露,可以對(duì)ASP頁(yè)面進(jìn)行加密。我們?cè)捎脙煞N方法對(duì)ASP頁(yè)面進(jìn)行加密。一是使用組件技術(shù)將編程邏輯封裝入DLL之中;二是使用微軟的ScriptEncoder對(duì)ASP頁(yè)面進(jìn)行加密。使用組件技術(shù)存在的主要問(wèn)題是每段代碼均需組件化,操作比較繁瑣,工作量較大,而使用Encoder對(duì)ASP頁(yè)進(jìn)行加密,操作簡(jiǎn)單,收效良好。

ScriptEncoder的運(yùn)行程序是SCRENC.EXE,使用方法是:

SCRENC [/s][/f][/xl][/ldefLanguage][/edefExtention]inputfile outputfile

其中:/s是屏蔽屏幕輸出;/f指定輸出文件是否覆蓋同名輸入文件;/xl指是否在.asp文件的頂部添加@Language指令;/ldefLanguage指定缺省的腳本語(yǔ)言;/edefExtention指定待加密文件的擴(kuò)展名。

4、存儲(chǔ)過(guò)程的使用

使用存儲(chǔ)過(guò)程不僅可以提高查詢速度,而且可以保證事務(wù)的完整性。在該系統(tǒng)中,每個(gè)文件對(duì)應(yīng)唯一的流水號(hào),當(dāng)有新的文件要入庫(kù)時(shí)流水號(hào)就會(huì)自動(dòng)加一。由于所有的用戶都在網(wǎng)上,那么兩個(gè)文件同時(shí)入庫(kù)的情況就有可能發(fā)生,為了保證流水號(hào)的唯一性,就要求“取流水號(hào)”和“流水號(hào)加一”作為一個(gè)事務(wù)來(lái)完成。ASP調(diào)用存儲(chǔ)過(guò)程比調(diào)用SQL語(yǔ)句要復(fù)雜一些,必須用ADO組件中的命令對(duì)象,步驟如下:

創(chuàng)建一個(gè)ADO命令對(duì)象,把Commandtext屬性為存儲(chǔ)過(guò)程名,Commandtype屬性為4,表示該命令是調(diào)用存儲(chǔ)過(guò)程為命令對(duì)象創(chuàng)建參數(shù)。

用“命令對(duì)象.CreateParameter(參數(shù)名稱,類型,方向,長(zhǎng)度)”命令創(chuàng)建對(duì)應(yīng)與存儲(chǔ)過(guò)程的輸人、輸出參數(shù)。

用“命令對(duì)象.Parameters(參數(shù)名稱).Value=參數(shù)值”命令給輸人參數(shù)賦值。

用“命令對(duì)象.Parameters.Append參數(shù)名稱”命令將各個(gè)參數(shù)加入到命令對(duì)象的參數(shù)集合中。

“命令對(duì)象.Execute”執(zhí)行存儲(chǔ)過(guò)程。

“變量名=命令對(duì)象.Parameters(輸出參數(shù)名稱).Value”得到輸出參數(shù)值。

結(jié)束語(yǔ)

基于B/S模式開發(fā)的收發(fā)文管理系統(tǒng)的實(shí)現(xiàn),無(wú)疑會(huì)使傳統(tǒng)的以手工為主的辦公方式和辦公手段,向科學(xué)化、規(guī)范化、高效化和信息化轉(zhuǎn)變??梢灶A(yù)計(jì),隨著辦公信息量的增加和信息化程度的提高,電子辦公將是未來(lái)辦公的發(fā)展方向。

vb.net個(gè)人理財(cái)數(shù)據(jù)庫(kù)管理系統(tǒng) 下面要求 有的給我發(fā)郵箱吧 441741651@qq.com

個(gè)人財(cái)務(wù)信息管理系統(tǒng),你說(shuō)什么具體的要求,如語(yǔ)言

哪些功能要明確什么樣的數(shù)據(jù)結(jié)構(gòu)

東西,我們可以幫你

分享標(biāo)題:vb.net事務(wù)管理的簡(jiǎn)單介紹
URL地址:http://muchs.cn/article4/dopheoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供營(yíng)銷型網(wǎng)站建設(shè)網(wǎng)站設(shè)計(jì)公司、自適應(yīng)網(wǎng)站、ChatGPT外貿(mào)網(wǎng)站建設(shè)標(biāo)簽優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)