真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

vb點虐 事務提交的簡單介紹

VB.NET想實現(xiàn)一個功能,將數(shù)據(jù)庫表中的信息顯示在textbox中。請大神幫忙看看,指點一下

又碰到你了。。

成都創(chuàng)新互聯(lián)主要從事成都網(wǎng)站設計、網(wǎng)站建設、外貿(mào)網(wǎng)站建設、網(wǎng)頁設計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務。立足成都服務霍林郭勒,十年網(wǎng)站建設經(jīng)驗,價格優(yōu)惠、服務專業(yè),歡迎來電咨詢建站服務:18980820575

在 conn.Open() '打開連接' 之后,把內(nèi)容讀到數(shù)據(jù)集中,dataset和excel差不多,就可以直接操作數(shù)據(jù)了

Dim da As OleDbDataAdapter

Dim ds As DataSet

da = New OleDbDataAdapter(sql, conn)

ds = New DataSet

da.Fill(ds, "tbSheet") '填充到ds中,表名是tbSheet

'然后就可以每個單元格調(diào)用了

TextBox2.Text = ds.Tables("tbSheet").Rows(0).Item("Name")

推薦個網(wǎng)址

在VB中,怎樣對SQL進行事務處理

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

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

在存儲過程中使用?BEGIN?TRANS,?COMMIT?TRANS,?ROLLBACK?TRANS?實現(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ào)用中

擁有運行一個事務的最佳性能

獨立于應用程序

限制:

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

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

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

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

SqlConnection?和OleDbConnection??對象有一個?BeginTransaction?方法,它可以返回?SqlTransaction

或者OleDbTransaction?對象。而且這個對象有?Commit?和?Rollback?方法來管理事務

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)點:

簡單性

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

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

缺點:

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

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

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

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

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

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

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

的事務。

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

COM+事務。

定義一個COM+事務處理的類

[Transaction(TransactionOption.Required)]

public?class?DataAccess:System.EnterpriseServices.ServicedComponent

{

}

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

Disabled??????忽略當前上下文中的任何事務。

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

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

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

Supported?????如果事務存在,則共享該事務。

一般來說COM+中的組件需要Required?或Supported。當組件用于記錄或查帳時RequiresNew?很有用,因為組件應該與活動中其他事務處理的提交或回滾隔離開來。

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

COM+事務有手動處理和自動處理,自動處理就是在所需要自動處理的方法前加上[AutoComplete],根據(jù)方法的正常或拋出異常決定提交或回滾。

手動處理就是調(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();

}

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

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

COM+事務處理的類必須強命名。

詳談如何在VB.NET使用ORACLR數(shù)據(jù)庫事務麻煩告訴我

Oracle.DataAccess.Client 命名空間是 ODP.NET 的一部分,它包含許多類,其中有OracleConnection、OracleCommand 和 OracleTransaction。示例程序用到了這些類。 VB.NET使用ORACLR第 1 步創(chuàng)建一個 OracleConnection 對象連接到 Oracle 數(shù)據(jù)庫,然后打開該連接。

在C# 中:OracleConnection myOracleConnection =new OracleConnection( "User Id=store;Password=store;Data Source=ORCL" ); myOracleConnection.Open(); 在VB.NET 中:Dim myOracleConnection As New OracleConnection( _ "User Id=store;Password=store;Data Source=ORCL") myOracleConnection.Open() User Id 和 Password 屬性指定了您所要連接到的模式的數(shù)據(jù)庫用戶和口令。Data Source 屬性指定了數(shù)據(jù)庫的 Oracle Net 服務名稱;初始數(shù)據(jù)庫的默認服務名稱為 ORCL。如果您使用的不是初始數(shù)據(jù)庫,或者您的服務名稱不同,那么您需要在程序中修改 Data Source 屬性的設置。 VB.NET使用ORACLR第 2 步創(chuàng)建一個 OracleTransaction 對象,然后調(diào)用 OracleConnection 對象的 BeginTransaction() 方法啟動事務。 在C# 中:OracleTransaction myOracleTransaction = myOracleConnection.BeginTransaction(); In VB.NET: Dim myOracleTransaction As OracleTransaction = _ myOracleConnection.BeginTransaction() VB.NET使用ORACLR第3 步創(chuàng)建一個 OracleCommand 對象,用于存儲 SQL 語句。 在C# 中:OracleCommand myOracleCommand = myOracleConnection.CreateCommand(); 在VB.NET 中:Dim myOracleCommand As OracleCommand = myOracleConnection.CreateCommand 因為OracleCommand 對象使用 OracleConnection 對象的 CreateCommand() 方法創(chuàng)建的,所以它自動使用在第 2 步中為 OracleConnection 對象設置的事務。 VB.NET使用ORACLR第 4 步將OracleCommand 對象的 CommandText 屬性設為向表 product_types 中添加一行的第一條 INSERT 語句。

在C# 中:myOracleCommand.CommandText = "INSERT INTO product_types (" + " product_type_id, name" + ") VALUES (" + " 3, 'Magazine'" + ")"; 在VB.NET 中:myOracleCommand.CommandText = _ "INSERT INTO product_types (" _ " product_type_id, name" _ ") VALUES (" _ " 3, 'Magazine'" _ ")" VB.NET使用ORACLR第 5 步

使用OracleCommand 對象的 ExecuteNonQuery() 方法運行 INSERT 語句。

在C# 中:myOracleCommand.ExecuteNonQuery(); 在VB.NET 中:myOracleCommand.ExecuteNonQuery(); VB.NET使用ORACLR第 6 和第 7 步將OracleCommand 對象的 CommandText 屬性設為向表 Products 中添加一行的第二條 INSERT 語句,并運行它。

在C# 中:myOracleCommand.CommandText = "INSERT INTO products (" + " product_id, product_type_id, name, description, price" + ") VALUES (" + " 5, 3, 'Oracle Magazine', 'Magazine about Oracle', 4.99" + ")"; myOracleCommand.ExecuteNonQuery(); 在VB.NET 中:myOracleCommand.CommandText = _ "INSERT INTO products (" _ " product_id, product_type_id, name, description, price" _ ") VALUES (" _ " 5, 3, 'Oracle Magazine', 'Magazine about Oracle', 4.99" _ ")" myOracleCommand.ExecuteNonQuery() VB.NET使用ORACLR第 8 步使用OracleTransaction 對象的 Commit() 方法提交數(shù)據(jù)庫中的事務。

在C# 中:myOracleTransaction.Commit(); 在VB.NET 中:myOracleTransaction.Commit() 在完成 Commit() 方法之后,由 INSERT 語句添加的兩行將在數(shù)據(jù)庫中永久記錄。 VB.NET使用ORACLR第 9 步使用Close() 方法關閉 OracleConnection 對象。在C# 中:myOracleConnection.Close(); 在VB.NET 中: myOracleConnection.Close() 編譯并運行示例程序要編譯 C# 示例程序,您可以使用 csc 命令運行 C# 編譯器。因為程序使用 Oracle Data Access DLL,所以您應使用 /r 選項指定該 DLL 的完整路徑,例如:注意:您需要用您計算機上的相應路徑來替換該 DLL 的路徑。此外,如果您的計算機找不到 csc 編譯器,那么您可能需要運行 Microsoft sdkvars.bat 腳本來首先設置 .NET SDK 的環(huán)境變量;您可以在安裝 .NET SDK 的 bin 目錄中找到該腳本。 如果您遇到以下錯誤:Example1.cs(10,7):error CS0246:The type or namespace name 'Oracle' could not be found (are you missing a using directive or an assembly reference?) 這說明您沒有在編譯命令中正確指定 Oracle Data Access DLL。(有關設置的信息,請參閱 John Paul Cook 的技術(shù)文章“在 Oracle 數(shù)據(jù)庫上構(gòu)建 .NET 應用程序”。) 下面是用于編譯 VB.NET 程序的等價命令:vbc TransExample1.vb /r:C:\oracle\product\10.1.0\ Client_1\bin\Oracle.DataAccess.dll /r:system.dll /r:system.data.dll 接下來,輸入以下命令,運行示例: An exception was thrown Message = ORA-12514:TNS:listener does not currently know of service requested in connect descriptor 您將看到程序的輸出。不過,如果您遇到類似以下的異常這說明 OracleConnection 對象的連接字符串中的 Data Source 的設置不正確。您應當咨詢您的 DBA 或查閱 Oracle Net 文檔以獲得更多詳細信息。 如果您使用的是 VS .NET,那么您可以遵循以下指示來編譯和運行 C# 程序 TransExample1.cs:

創(chuàng)建一個新的 C# 控制臺應用程序。FileNew Project,然后選擇 Visual C# Projects,Console Application。

關于在VB.NET中怎么使用事務的問題,還有其

在vb點虐 中要定義一個事務,需要使用Begin tran命令,在這一命令之后的任何語句都將被認為是事務的一部分。命令Commit用來完成VB.NET處理,并使事務對數(shù)據(jù)庫所作的修改成為永久的。Rollback命令用來取消一個事務,并還原事務對數(shù)據(jù)庫所作的修改。


當前題目:vb點虐 事務提交的簡單介紹
網(wǎng)站URL:http://weahome.cn/article/ddgjgcj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部