VB.NET还是比较常用的,于是我研究了一下VB.NET使用OracleTransaction对象,在这里拿出来和大家分享一下,希望对大家有用。
VB.NET使用OracleTransaction对象需要注意的几点:
1)你需要在你整个事务执行中只能有***OracleConnection,也就是说如果你事务处理过程中如果需要与数据库的操作都只能在这***的Command中执行,类似于:
- imgCommand.CommandText = sSQL
- imgCommand.ExecuteNonQuery()或其他操作
若你新建一个连接执行其他数据库操作的话,整个事务过程就会抛出异常
2)如果你需要在你SQL语句中加入参数,则你必须在你执行完提交或相关数据库操作之后将其Command的参数清空,下边举一个实际的项目里的事务函数:
- ''' <summary>
- ''' 保存热点文本文件信息到数据库
- ''' </summary>
- Private Function SaveTextFile()Function SaveTextFile() As Boolean
- Dim sSQl As String
- sSQl = "select type_id from sys_file_type where file_extname='TXT'"
- Try
- imgCommand.CommandText = sSQl
- Dim typeID As Int32 = Convert.ToInt32(imgCommand.ExecuteScalar()) '文件类型
- '读取文本信息
- Dim Textblob() As Byte = GetText()
- sSQl = "insert into t_watch_textcontent(image_id,text_content,type_id)
values(:imageid,:textcontent,:typeid)"- '增添SQL参数
- Dim Param As OracleClient.OracleParameter
- Param = New OracleClient.OracleParameter("imageid", sNewImageID)
- imgCommand.Parameters.Add(Param)
- Param = New OracleClient.OracleParameter("textcontent", Textblob)
- imgCommand.Parameters.Add(Param)
- Param = New OracleClient.OracleParameter("typeid", typeID)
- imgCommand.Parameters.Add(Param)
- '提交信息
- imgCommand.CommandText = sSQl
- If imgCommand.ExecuteNonQuery() > 0 Then
- bResult = True
- '关键是这里,需要你手动清除参数
- imgCommand.Parameters.Clear()
- End If
- Catch ex As Exception
- Me.ExceptionMessage = ex
- bResult = False
- End Try
- Return bResult
- End Function
以上介绍VB.NET使用OracleTransaction对象。
【编辑推荐】