Advertisement

ArcEngine开发连接PostgresSQL空间库Cannot connect to database because the database client software failed to

阅读量:

QQ交流群:607330463 GIS开发技术最强交流群 未经允许 禁止转载 可以参考

目录

1问题描述

2 问题解决

3代码介绍


1问题描述

ArcEngine的二次开发应用在连接postgresql数据库时可能存在无法识别的客户端连接问题。例如

报错:无法与数据库建立连接的原因是数据库客户端软件未能正确加载。
请确保数据库客户端软件已正确安装并配置完成。

2 问题解决

下载位置:ArcEngine与PostgresSQL之间的连接需要五个DLL文件的技术文档资源-下载

此时需要将这五个.dll复制到ArcEngine的bin目录下。

以管理员身份拷贝到该目录下

3代码介绍

复制代码
       private void ToolStripMenuItem_Click(object sender, EventArgs e)

    
     {
    
        
    
         IWorkspace workspace1 = connectPostsde("192.168.10.98", "ghsjdb", "ghsjdb", "ghsjdb");
    
  
    
         IWorkspace workspace2 = connectPostsde("192.168.10.18", "sde", "sde", "sde");
    
  
    
  
    
  
    
  
    
         System.Runtime.InteropServices.Marshal.ReleaseComObject(workspace1);
    
         System.Runtime.InteropServices.Marshal.ReleaseComObject(workspace2);
    
  
    
     }
    
  
    
  
    
     /// <summary>
    
     /// 配置SDE连接PgsqlSde数据库
    
     /// </summary>
    
     /// <param name="serverIP">pgsql所在的服务器IP</param>
    
     /// <param name="instance">pgsql的实例</param>
    
     /// <param name="database">pgsqlsde数据库名称</param>
    
     /// <param name="user">pgsqlsde帐号</param>
    
     /// <param name="password">pgsqlsde密码</param>
    
     /// <returns></returns>
    
     public static IWorkspace connectPostsde(string serverIP, string user, string password, string database)
    
     {
    
         IWorkspace pWkspace = null;
    
         ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2 workspaceFactory = null;
    
         ESRI.ArcGIS.esriSystem.IPropertySet pPropertySet = new ESRI.ArcGIS.esriSystem.PropertySetClass();
    
         pPropertySet.SetProperty("SERVER", serverIP);
    
         pPropertySet.SetProperty("INSTANCE", "sde:postgresql:" + serverIP);
    
         //pPropertySet.SetProperty("DBCLIENT", "postgresql");
    
         pPropertySet.SetProperty("AUTHENTICATION_MODE", "DBMS");
    
         pPropertySet.SetProperty("USER", user);
    
         pPropertySet.SetProperty("PASSWORD", password);
    
         pPropertySet.SetProperty("DATABASE", database);
    
         //pPropertySet.SetProperty("VERSION", "sde.DEFAULT");
    
         workspaceFactory = (ESRI.ArcGIS.Geodatabase.IWorkspaceFactory2)new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass();
    
         try
    
         {
    
             pWkspace = workspaceFactory.Open(pPropertySet, 0);
    
             return pWkspace;
    
         }
    
         catch (Exception ex)
    
         {
    
             return null;
    
         }
    
     }
    
    
    
    
    代码解读

全部评论 (0)

还没有任何评论哟~