VB.NET+win10环境下,ArcGIS.DataSourcesGDE和Npgsql连接PostgreSQL

一、利用ESRI.ArcGIS.DataSourcesGDB连接PostgreSQL

环境准备

到ArcGis安装路径下查看可以支持的PostgreSQL版本

PostgreSQL安装配置

直连方式要求ArcSDE的客户端必须安装数据库的客户端类库,所以首先需要获取PostgreSQL的客户端。

但是ArcGIS Desktop是32位软件,需要的是32位的PostgreSQL类库。

另外需要将ArcGIS Desktop下数据库支持中的st_geometry.dll文件拷贝到PostgreSQL中的bin文件下

将PostgreSQL的bin目录下的 libeay32.dll;libiconv-2.dll;libintl-8.dll;libpq.dll;ssleay32.dll文件拷贝到Desktop 安装目录的bin目录下

PostgreSQL客户端下载链接

具体安装教程见https://www.yiibai.com/postgresql/install-postgresql.html

 

具体编程代码

Public Function OpensdeWorkspace(ByVal sServerName As String, ByRef sInstance As String, ByVal sUserName As String, ByVal sPassword As String, ByVal sDatabase As String, ByVal sVersionName As String) As IWorkspace

        'ByVal Server As String, 
        Dim ws As IWorkspace = Nothing
        Dim ws2 As IWorkspace2 = Nothing
        Dim pProset As IPropertySet = New PropertySetClass
        Dim pSqlFace As IWorkspaceFactory = New SdeWorkspaceFactoryClass()


        pProset.SetProperty("SERVER", sServerName) '//博主这边是就是ip的值
        pProset.SetProperty("INSTANCE", sInstance) 
        '// 实例 "sde:postgresql:" & "ip" & "," & "port"

        pProset.SetProperty("DATABASE", sDatabase) '// 数据库名称
        pProset.SetProperty("USER", sUserName) '// 用户名
        pProset.SetProperty("PASSWORD", sPassword) '// 密码
        pProset.SetProperty("VERSION", sVersionName) ' // 版本  默认SDE.DEFAULT
        pProset.SetProperty("AUTHENTICATION_MODE", "DBMS")
        Try
            ws = pSqlFace.Open(pProset, 0)
        Catch ex As Exception
            MsgBox(ex.ToString & " sql连接失败 ")
        End Try
        Return ws
    End Function

友情提醒:需要引用Imports ESRI.ArcGIS.DataSourcesGDB

二、利用Npsql连接PostgreSQL

安装Npgsql驱动

从网站http://pgfoundry.org/frs/?group_id=1000140&release_id=2106下载

下载后解压然后在项目中添加引用,点击浏览,找到解压所在路径,添加Npgsql.dll

具体代码

 Public Sub Workspace2()
        Dim NSd As NpgsqlDataReader = Nothing
        Dim conn As NpgsqlConnection = New NpgsqlConnection("Server=ip;Port=port;User Id=用户名;Password=密码;Database=数据库名称")
        Dim Command As NpgsqlCommand = New NpgsqlCommand("select * from 表名", conn)
        conn.CreateCommand()
        Try
            conn.Open()
            NSd = Command.ExecuteReader
        Catch ex As Exception
            MsgBox(ex.ToString & " sql连接失败 ")
        End Try
        'Dim str As String
        'str = NSd.GetSchemaTable().Rows(1).Item(1).ToString()
        'MsgBox(str & "hh ")
    End Sub

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值