Skip to content

Commit 773b00f

Browse files
committed
sql errors and exceptions handling
1 parent d1e1469 commit 773b00f

File tree

8 files changed

+87
-8
lines changed

8 files changed

+87
-8
lines changed

Connection.vb

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,21 @@ Public Class Connection
2020
Public Overrides Sub Open(dsn As String)
2121
Me._provider = New NpgsqlConnection(dsn)
2222
Me._provider.Open()
23-
' TODO
24-
'AddHandler Me._provider.InfoMessage, AddressOf Connection.errorHandler
23+
AddHandler Me._provider.Notice, AddressOf Connection.errorHandler
2524
End Sub
2625

27-
Public Overrides Function CreateAndBeginTransaction(Optional transactionName As String = "", Optional isolationLevel As IsolationLevel = IsolationLevel.Unspecified) As Databasic.Transaction
28-
Return New Transaction() With {
26+
Protected Shared Sub errorHandler(sender As Object, args As NpgsqlNoticeEventArgs)
27+
Dim sqlErrors As Databasic.SqlErrorsCollection = New SqlErrorsCollection()
28+
sqlErrors.Add(New Databasic.PostgreSql.SqlError(args.Notice))
29+
Databasic.Events.RaiseError(sqlErrors)
30+
End Sub
31+
32+
Protected Overrides Function createAndBeginTransaction(Optional transactionName As String = "", Optional isolationLevel As IsolationLevel = IsolationLevel.Unspecified) As Databasic.Transaction
33+
Me.OpenedTransaction = New Transaction() With {
2934
.ConnectionWrapper = Me,
3035
.Instance = Me._provider.BeginTransaction(isolationLevel)
3136
}
37+
Return Me.OpenedTransaction
3238
End Function
3339

3440
End Class

Databasic.PostgreSql.vbproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
<DependentUpon>Settings.settings</DependentUpon>
9090
<DesignTimeSharedInput>True</DesignTimeSharedInput>
9191
</Compile>
92+
<Compile Include="SqlError.vb" />
9293
<Compile Include="ProviderResource.vb" />
9394
<Compile Include="Statement.vb" />
9495
<Compile Include="Transaction.vb" />

SqlError.vb

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
Public Class SqlError
2+
Inherits Databasic.SqlError
3+
4+
Public Property ColumnName As String
5+
Public Property ConstraintName As String
6+
Public Property DataTypeName As String
7+
Public Property Detail As String
8+
Public Property File As String
9+
Public Property Hint As String
10+
Public Property InternalPosition As Integer
11+
Public Property InternalQuery As String
12+
Public Property Line As String
13+
Public Property Position As Integer
14+
Public Property Routine As String
15+
Public Property SchemaName As String
16+
Public Property Severity As String
17+
Public Property TableName As String
18+
Public Property Where As String
19+
20+
Public Sub New(pgSqlNotice As Global.Npgsql.PostgresNotice)
21+
Me.Message = pgSqlNotice.MessageText
22+
Me.Code = pgSqlNotice.SqlState
23+
24+
Me.ColumnName = pgSqlNotice.ColumnName
25+
Me.ConstraintName = pgSqlNotice.ConstraintName
26+
Me.DataTypeName = pgSqlNotice.DataTypeName
27+
Me.Detail = pgSqlNotice.Detail
28+
Me.File = pgSqlNotice.File
29+
Me.Hint = pgSqlNotice.Hint
30+
Me.InternalPosition = pgSqlNotice.InternalPosition
31+
Me.InternalQuery = pgSqlNotice.InternalQuery
32+
Me.Line = pgSqlNotice.Line
33+
Me.Position = pgSqlNotice.Position
34+
Me.Routine = pgSqlNotice.Routine
35+
Me.SchemaName = pgSqlNotice.SchemaName
36+
Me.Severity = pgSqlNotice.Severity
37+
Me.TableName = pgSqlNotice.TableName
38+
Me.Where = pgSqlNotice.Where
39+
End Sub
40+
End Class

Transaction.vb

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ Imports Npgsql
33

44
Public Class Transaction
55
Inherits Databasic.Transaction
6+
67
Public Overrides Property Instance As DbTransaction
78
Get
89
Return Me._instance
@@ -12,4 +13,35 @@ Public Class Transaction
1213
End Set
1314
End Property
1415
Private _instance As NpgsqlTransaction
16+
17+
Public Shadows Sub Rollback(name As String)
18+
Try
19+
Me._instance.Rollback(name)
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(name As String)
28+
Try
29+
Me._instance.Save(name)
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+
37+
Public Sub Release(name As String)
38+
Try
39+
Me._instance.Release(name)
40+
Me.ConnectionWrapper.OpenedTransaction = Nothing
41+
Catch ex As Exception
42+
Me.ConnectionWrapper.OpenedTransaction = Nothing
43+
Throw ex
44+
End Try
45+
End Sub
46+
1547
End Class

content/App.config.install.xdt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<clear xdt:Transform="InsertIfMissing" />
55
<add
66
name="Databasic.Example.PqSql"
7-
connectionString="Server=127.0.0.1;Port=5432;Database=DATABASE;User Id=USER_NAME;Password=PASSWORD;"
7+
connectionString="Server=localhost;Port=5432;Database=DATABASE;User Id=USER_NAME;Password=PASSWORD;"
88
providerName="Npgsql"
99
xdt:Transform="InsertIfMissing"
1010
xdt:Locator="Match(name)" />

content/App.config.uninstall.xdt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<connectionStrings>
44
<add
55
name="Databasic.Example.PqSql"
6-
connectionString="Server=127.0.0.1;Port=5432;Database=DATABASE;User Id=USER_NAME;Password=PASSWORD;"
6+
connectionString="Server=localhost;Port=5432;Database=DATABASE;User Id=USER_NAME;Password=PASSWORD;"
77
providerName="Npgsql"
88
xdt:Transform="Remove"
99
xdt:Locator="Match(name)" />

content/Web.config.install.xdt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
<clear xdt:Transform="InsertIfMissing" />
55
<add
66
name="Databasic.Example.PqSql"
7-
connectionString="Server=127.0.0.1;Port=5432;Database=DATABASE;User Id=USER_NAME;Password=PASSWORD;"
7+
connectionString="Server=localhost;Port=5432;Database=DATABASE;User Id=USER_NAME;Password=PASSWORD;"
88
providerName="Npgsql"
99
xdt:Transform="InsertIfMissing"
1010
xdt:Locator="Match(name)" />

content/Web.config.uninstall.xdt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<connectionStrings>
44
<add
55
name="Databasic.Example.PqSql"
6-
connectionString="Server=127.0.0.1;Port=5432;Database=DATABASE;User Id=USER_NAME;Password=PASSWORD;"
6+
connectionString="Server=localhost;Port=5432;Database=DATABASE;User Id=USER_NAME;Password=PASSWORD;"
77
providerName="Npgsql"
88
xdt:Transform="Remove"
99
xdt:Locator="Match(name)" />

0 commit comments

Comments
 (0)