Skip to content

Commit 36e6434

Browse files
committed
sql errors and exceptions handling
1 parent b537938 commit 36e6434

File tree

4 files changed

+82
-25
lines changed

4 files changed

+82
-25
lines changed

Connection.vb

Lines changed: 30 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,45 @@
11
Imports System.Data.Common
22
Imports System.Data.SqlClient
3+
Imports System.Reflection
34

45
Public Class Connection
5-
Inherits Databasic.Connection
6+
Inherits Databasic.Connection
67

7-
Public Overrides ReadOnly Property Provider As DbConnection
8-
Get
9-
Return Me._provider
10-
End Get
11-
End Property
12-
Private _provider As SqlConnection
8+
Public Overrides ReadOnly Property Provider As DbConnection
9+
Get
10+
Return Me._provider
11+
End Get
12+
End Property
13+
Private _provider As SqlConnection
1314

14-
Public Overrides ReadOnly Property ProviderResource As System.Type = GetType(ProviderResource)
15+
Public Overrides ReadOnly Property ProviderResource As System.Type = GetType(ProviderResource)
1516

16-
Public Overrides ReadOnly Property ClientName As String = "System.Data.SqlClient"
17+
Public Overrides ReadOnly Property ClientName As String = "System.Data.SqlClient"
1718

18-
Public Overrides ReadOnly Property Statement As System.Type = GetType(Statement)
19+
Public Overrides ReadOnly Property Statement As System.Type = GetType(Statement)
1920

20-
Public Overrides Sub Open(dsn As String)
21-
Me._provider = New SqlConnection(dsn)
22-
Me._provider.Open()
23-
AddHandler Me._provider.InfoMessage, AddressOf Connection.errorHandler
24-
End Sub
21+
Public Overrides Sub Open(dsn As String)
22+
Me._provider = New SqlConnection(dsn)
23+
Me._provider.Open()
24+
AddHandler Me._provider.InfoMessage, AddressOf Connection.errorHandler
25+
End Sub
2526

26-
Public Overrides Function CreateAndBeginTransaction(Optional transactionName As String = "", Optional isolationLevel As IsolationLevel = IsolationLevel.Unspecified) As Databasic.Transaction
27-
Return New Transaction() With {
27+
Protected Shared Sub errorHandler(sender As Object, args As SqlInfoMessageEventArgs)
28+
Dim sqlErrors As Databasic.SqlErrorsCollection = New SqlErrorsCollection()
29+
For index = 0 To args.Errors.Count - 1
30+
sqlErrors.Add(New Databasic.MsSql.SqlError(args.Errors(index)))
31+
Next
32+
Databasic.Events.RaiseError(sqlErrors)
33+
End Sub
34+
35+
Protected Overrides Function createAndBeginTransaction(Optional transactionName As String = "", Optional isolationLevel As IsolationLevel = IsolationLevel.Unspecified) As Databasic.Transaction
36+
Me.OpenedTransaction = New Transaction() With {
2837
.ConnectionWrapper = Me,
29-
.Instance = Me._provider.BeginTransaction(isolationLevel, transactionName.Substring(0, Math.Min(transactionName.Length - 1, 32)))
38+
.Instance = Me._provider.BeginTransaction(
39+
isolationLevel, transactionName.Substring(0, Math.Min(transactionName.Length - 1, 32))
40+
)
3041
}
42+
Return Me.OpenedTransaction
3143
End Function
3244

3345
End Class

Databasic.MsSql.vbproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
</ItemGroup>
6060
<ItemGroup>
6161
<Compile Include="Connection.vb" />
62+
<Compile Include="SqlError.vb" />
6263
<Compile Include="My Project\AssemblyInfo.vb" />
6364
<Compile Include="My Project\Application.Designer.vb">
6465
<AutoGen>True</AutoGen>

SqlError.vb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
Public Class SqlError
2+
Inherits Databasic.SqlError
3+
4+
Public Property Server As String
5+
Public Property Procedure As String
6+
Public Property Source As String
7+
Public Property LineNumber As Integer
8+
Public Property [Class] As Byte
9+
Public Property State As Byte
10+
11+
Public Sub New(msSqlError As System.Data.SqlClient.SqlError)
12+
Me.Message = msSqlError.Message
13+
Me.Code = msSqlError.Number
14+
15+
Me.Server = msSqlError.Server
16+
Me.Procedure = msSqlError.Procedure
17+
Me.Source = msSqlError.Source
18+
Me.LineNumber = msSqlError.LineNumber
19+
Me.[Class] = msSqlError.[Class]
20+
Me.State = msSqlError.State
21+
End Sub
22+
End Class

Transaction.vb

Lines changed: 29 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,35 @@ Imports System.Data.SqlClient
33

44
Public Class Transaction
55
Inherits Databasic.Transaction
6+
67
Public Overrides Property Instance As DbTransaction
7-
Get
8-
Return Me._instance
9-
End Get
10-
Set(value As DbTransaction)
11-
Me._instance = value
12-
End Set
13-
End Property
8+
Get
9+
Return Me._instance
10+
End Get
11+
Set(value As DbTransaction)
12+
Me._instance = value
13+
End Set
14+
End Property
1415
Private _instance As SqlTransaction
16+
17+
Public Shadows Sub Rollback(transactionName As String)
18+
Try
19+
Me._instance.Rollback(transactionName)
20+
Me.ConnectionWrapper.OpenedTransaction = Nothing
21+
Catch ex As Exception
22+
Me.ConnectionWrapper.OpenedTransaction = Nothing
23+
Throw ex
24+
End Try
25+
End Sub
26+
27+
Public Sub Save(savePointName As String)
28+
Try
29+
Me._instance.Save(savePointName)
30+
Me.ConnectionWrapper.OpenedTransaction = Nothing
31+
Catch ex As Exception
32+
Me.ConnectionWrapper.OpenedTransaction = Nothing
33+
Throw ex
34+
End Try
35+
End Sub
36+
1537
End Class

0 commit comments

Comments
 (0)