加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

vb.net – 为什么在构建版本时无法在Win 10 64bit中连接到Postgr

发布时间:2020-12-17 00:18:53 所属栏目:大数据 来源:网络整理
导读:TDBACore.vb的代码: Imports System.ComponentModelImports System.DataEditorBrowsable(EditorBrowsableState.Never) _Public MustInherit Class TDBACore Private Shared FRefCount As Integer Friend Shared FIsBeginTran As Boolean = False Friend Sha
TDBACore.vb的代码:
Imports System.ComponentModel
Imports System.Data

<EditorBrowsable(EditorBrowsableState.Never)> _
Public MustInherit Class TDBACore        
    Private Shared FRefCount As Integer

    Friend Shared FIsBeginTran As Boolean = False

    Friend Shared FConnection As IDbConnection

    Friend Shared FTransaction As IDbTransaction

    Private disposedValue As Boolean

    Friend Shared iRecheckTimeout As Integer
    Friend Shared iConnectionTimeOut As Integer

    Friend MustOverride Function CreateConnection() As IDbConnection

    Public Sub New()
        Me.disposedValue = False
        If TDBACore.FRefCount = 0 Then
            TDBACore.FConnection = Me.CreateConnection()
        End If
        TDBACore.FRefCount += 1

    End Sub

   Friend Shared Sub OpenConnection(ByVal ConnectionString As String)
    If TDBACore.FConnection.State = ConnectionState.Closed Then
        TDBACore.FConnection.ConnectionString = ConnectionString
        TDBACore.FConnection.Open()
    End If
   End Sub
End Class

TDBOpener.vb的代码:

Public NotInheritable Class TDBOpener
    Inherits TDBACore
    Public Shared ReadOnly _TDBOpener As New TDBOpener()
    Friend Overrides Function CreateConnection() As IDbConnection
        Return New NpgsqlConnection()
    End Function

    Public Shared Sub SetTimeoutValue(ByVal param_iRecheckTimeout As Integer,ByVal param_iConnectionTimeOut As Integer)
        TDBACore.iConnectionTimeOut = param_iConnectionTimeOut
        TDBACore.iRecheckTimeout = param_iRecheckTimeout
    End Sub

    Public Shared Sub Open(ByVal ConnectionString As String)
        TDBACore.OpenConnection(ConnectionString)
    End Sub
 End Class

我通过Npgsql.dll 3.2.2.0测试连接到postgresql:

TDBOpener.Open("Server=192.168.1.10;Port=5434;UserId=postgres;Password=123456;Database=testdb;CommandTimeout=300;")

我使用Win 10,64bit,与2017 .Net Framework 4.6

如果我按模式[Debug]运行:它可以运行TDBACore的函数New()并连接ok.
但是,如果我按模式[Release]运行,它不会转到TDBACore的New()函数.
为什么?谢谢大家.(注意:我尝试赢7,没关系.)

赢得10,64位,与2017年.Net Framework 4.6:
如果我按模式[Release]运行,则无法初始化Public Shared ReadOnly _TDBOpener As New TDBOpener()

我的解决方案编辑功能打开TDBOpener:

Public Shared Sub Open(ByVal ConnectionString As String)
        If TDBACore.FConnection Is Nothing Then
            Dim obOpen = _TDBOpener
        End If
        TDBACore.OpenConnection(ConnectionString)
End Sub

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读