首页 / 浏览问题 / 组件GIS / 问题详情
[菜鸟]c#开发关于PG数据库的若干问题
15EXP 2017年11月15日
请问大虾们:

1.如何连接PG数据库?

2.如何将DEM,OSGB这类数据加载到PG数据库里。

谢谢

1个回答

1.首先你得在PG里面建一个数据库,然后通过我们的引擎新建PG数据源,方法是Datasources.Create 方法,填好连接数据库的参数DatasourceConnectionInfo ,参数主要有服务器名,数据库名,用户名,密码。之后就可以直接连接数据库使用了。

2.DEM可以导入成栅格数据集,可以存进数据库里面,OSGB不支持存进PG数据库里面,目前OSGB只支持文件型和MongoDB数据库。
5,985EXP 2017年11月15日
谢谢胡工,又是您帮我回答了问题。

1.对于网络的PG数据库,比如10.120.1.1/pgname,服务器名是这个IP地址么?

2.我研究了下udb数据库,里面的数据集(我的理解就是PG里的表格,不知道对不对)是有好多类型的,比如点,线,面,栅格等等,但是PG数据库里并没有这样的分类,是否超图已经对PG也封装了这样的类型?

谢谢

远程访问数据库的话,服务器名就是IP,这儿有一篇博客你可以参考一下,PGIS是对Postgresql的扩展,所以二者使用方式是一样的。http://blog.csdn.net/supermapsupport/article/details/78291912

另外UDB里面能用的数据集类型,PG里面几乎都有,你建了PG数据源就知道了

胡工,我按照您给我发的博文上操作了,但是还是没有连接上pg,上面我连接的报错信息,下面是我的pg库的截图,我在public里建了一个表t_project,但是连不上~麻烦帮我分析下原因吧,谢谢

应该先新建数据源

另外你的PG是本地的吗?

我的PG是本地的。

刚才给您截图里的数据库是我自己在PG里建立的,但是连接不上。然后我用idesktop新建数据源就成功了。

smdtv_1和smdtv_2是我在idesktop里建立的表。但是我用代码去连接还是没有数据源。

            DatasourceConnectionInfo dci = new DatasourceConnectionInfo();
            dci.EngineType = EngineType.PostgreSQL;
            dci.Server = "127.0.0.1";
            dci.Database = "aaa";
            dci.User = "postgres";
            dci.Password = "cn0.123456";
            dci.Alias = "aaa";
            Datasource m_datasource = m_workspace.Datasources.Create(dci);

m_datasource 为 null~~ 是不是需要指定驱动呢??

谢谢

已经创建了数据源就不需要再创建了,直接 打开就行了Datasource m_datasource = m_workspace.Datasources.open(dci);

crying 我用了open方法,m_datasource 还是 null~。数据库连接信息应该没有问题,我检查了好几遍~

你组件是用的多少位的啊?
是64位的~ pg是9.5 64位的版本
现在是桌面能成功连接,组件不能成功连接是吗,建议你用桌面安装路径下面Bin路径下面的动态库试试呢,主要把工程的工作目录设置成动态库引用的Bin路径
对了,上面你截图数据库名不是gisTest吗,怎么组件连接的时候变成aaa了

gisTest是在PG里建立的,aaa是用桌面工具建立的。桌面工具可以连接aaa数据源,连接不了gisTest数据源。所以我现在用组件去连接aaa这个数据源~smiley

根据您给我提供的那个博文里写的库 有这几个(libeay32.dll、libiconv-2.dll、libintl-8.dll、libpq.dll、ssleay32.dll),你的意思是我在工程里添加这几个动态库么?
您那边方便远程吗?方便的话把QQ私信给我,我远程看一下呢
您说对了,我把那5个动态库放在我工程的debug下面就能读取到了。太感谢了~~

还有一个问题。我如何使用类型 left join 这样的方式查询两个有关联关系的表的数据?

我看到有个Query方法,但是这个方法的使用方法说明很少,麻烦您给提点一下,谢谢~
你可以结合帮助文档看一下这个接口QueryParameter 成员
...