|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
我见过java运行在手机上,包括很廉价的山寨手机,但是却暂时没发现.net在手机上有什么作为。wp7可能是个转机,但是按照《Java的跨平台就是一句谎言。那.net的跨平台也当之无愧是一句谎言。oracle 数据库事件简介
数据库事件是由一组SQL语句构成的一个逻辑事情单位。您能够把事件看做是一组不成分的SQL语句,这些语句作为一个全体永世纪录在数据库中或一并打消。好比在银行帐户之间转移资金:一条UPDATE语句将从一个帐户的资金总数中减往一部分,另外一条UPDATE语句将把资金加到另外一个帐户中。减操纵和加操纵必需永世纪录在数据库中,大概必需一并打消―不然将丧失资金。这个复杂的示例仅利用了两条UPDATE语句,但一个更实践的事件大概包括很多INSERT、UPDATE和DELETE语句。
要永世纪录一个事件中的SQL语句的了局,您能够经由过程COMMIT语句来实行提交。要打消SQL语句的了局,您可使用ROLLBACK语句来实行回滚,这会把一切的行重设为它们本来的形态。只需您事前没有与数据库断开,则您在实行回滚之前所做的任何修正都将被打消。您还能够设置一个保留点,以便将事件回滚至该特定的点,同时坚持事件中的其他语句一成不变。
利用数据库事件(次要针对VB.NET)
您可使用OracleTransaction类的一个工具来暗示一个事件。OracleTransaction类包括多个属性,个中的两个为Connection(指定与事件联系关系的数据库毗连)和IsolationLevel(指定事件断绝级别)
Connection,指定与该事件联系关系的OracleConnection工具;
IsolationLevel,指定该事件的IsolationLevel;列举范例,用于对事物的锁定,取值有Chaos、ReadCommited、ReadUncommited、RepeatableRead、Serializable、Unspecified。
使用程序经由过程针对OracleConnection工具挪用BeginTransaction来创立OracleTransaction工具。对OracleTransaction工具实行与该事件联系关系的一切后续操纵(比方提交或中断该事件)。
Commit:提交SQL数据库事件;
Rollback:从挂起形态回滚事件;
您还可使用Save()在事件中设置一个保留点。
上面的示例创立一个OracleConnection和一个OracleTransaction。它还演示了怎样利用BeginTransaction、Commit和Rollback办法。(这是MSDN里的典范)
必要注重的是,这些操纵必要引进定名空间:Oracle.DataAcess.Client
Oracle.DataAccess.Client定名空间是ODP.NET的一部分,它包括很多类,个中有OracleConnection、OracleCommand和OracleTransaction。示例程序就用到了这些类。
事件操纵
1PublicSubRunOracleTransaction()SubRunOracleTransaction(myConnStringAsString)
2DimmyConnectionAsNewOracleConnection(myConnString)
3myConnection.Open()
4
5DimmyCommandAsOracleCommand=myConnection.CreateCommand()
6DimmyTransAsOracleTransaction
7
8Startalocaltransaction
9myTrans=myConnection.BeginTransaction(IsolationLevel.ReadCommitted)
10Assigntransactionobjectforapendinglocaltransaction
11myCommand.Transaction=myTrans
12
13Try
14myCommand.CommandText="INSERTINTODept(DeptNo,Dname,Loc)values(50,TECHNOLOGY,DENVER)"
15myCommand.ExecuteNonQuery()
16myCommand.CommandText="INSERTINTODept(DeptNo,Dname,Loc)values(60,ENGINEERING,KANSASCITY)"
17myCommand.ExecuteNonQuery()
18myTrans.Commit()
19Console.WriteLine("Bothrecordsarewrittentodatabase.")
20CatcheAsException
21myTrans.Rollback()
22Console.WriteLine(e.ToString())
23Console.WriteLine("Neitherrecordwaswrittentodatabase.")
24Finally
25myConnection.Close()
26EndTry
27EndSub
28
在.NET程序中设置事件保留点
正如本文后面所提到的那样,您能够设置一个保留点,以便将事件回滚至该特定的点,同时坚持事件中的其他语句一成不变。您可使用OracleTransaction类的Save()办法在事件中设置保留点。
假如您有一个十分长的事件而且但愿可以仅回滚到某个特定的工夫点,那末您大概要利用保留点。比方,您大概想对10个产物做一些变动,然后设置一个保留点,然后再对另10个产物做变动;假如您在举行第二批变动时呈现了毛病,那末您能够回滚至保留点,使您的第一批变动一成不变。
利用OracleTransaction工具必要注重的几点:
1)你必要在你全部事件实行中只能有独一OracleConnection,OracleCommand,OracleTransaction,也就是说假如你事件处置过程当中假如必要与数据库的操纵都只能在这独一的Command中实行,相似于:
imgCommand.CommandText=sSQL
imgCommand.ExecuteNonQuery()或其他操纵
若你新建一个毗连实行其他数据库操纵的话,全部事件历程就会抛出非常
2)假如你必要在你SQL语句中到场参数,则你必需在你实行完提交或相干数据库操纵以后将其Command的参数清空,下边举一个实践的项目里的事件函数:
事件函数
1<summary>
2保留热门文本文件信息到数据库
3</summary>
4PrivateFunctionSaveTextFile()FunctionSaveTextFile()AsBoolean
5DimsSQlAsString
6sSQl="selecttype_idfromsys_file_typewherefile_extname=TXT"
7Try
8imgCommand.CommandText=sSQl
9DimtypeIDAsInt32=Convert.ToInt32(imgCommand.ExecuteScalar())文件范例
10读取文本信息
11DimTextblob()AsByte=GetText()
12
13sSQl="insertintot_watch_textcontent(image_id,text_content,type_id)values(:imageid,:textcontent,:typeid)"
14增加SQL参数
15DimParamAsOracleClient.OracleParameter
16Param=NewOracleClient.OracleParameter("imageid",sNewImageID)
17imgCommand.Parameters.Add(Param)
18Param=NewOracleClient.OracleParameter("textcontent",Textblob)
19imgCommand.Parameters.Add(Param)
20Param=NewOracleClient.OracleParameter("typeid",typeID)
21imgCommand.Parameters.Add(Param)
22
23提交信息
24imgCommand.CommandText=sSQl
25IfimgCommand.ExecuteNonQuery()>0Then
26bResult=True
27关头是这里,必要你手动扫除参数
28imgCommand.Parameters.Clear()
29EndIf
30CatchexAsException
31Me.ExceptionMessage=ex
32bResult=False
33EndTry
34
35ReturnbResult
36EndFunction觉得J2EE好像有很多工具,比如servlet,jboss,tomcat,ejb什么的,可是微软的.NET怎么什么也没有啊? |
|