CMake编译中选择编译Oracle一项以后,编译的qgis才会有连接Oracle数据库的功能。
编译qgis以后,可以通过添加矢量图层中选择Oracle数据库,或是添加Oracle空间图层,或是添加Oracle GeoRaster图层来连接Oracle数据库。
本人是通过本地客户端连接的Oracle数据库,因此在创建OGR数据库连接时,不需要添加主机,否则还是连接失败,当然,也可能与目前使用的版本有关系(Qgis2.8.8,qt4.7.1)。
确保数据库名称、用户名、密码无误后,还是连接不上Oracle数据库,则有可能是qgis源码中的一处地方需要修改:
src\app\ogr\qgsogrhelperfunctions.cpp
createDatabaseURI()
接口中:if (connectionType == "Oracle Spatial"),不知道是不是因为语言翻译过后,还是什么造成的原因,cmbDatabaseTypes->currentText()获取的值是中文的”oracle空间数据库“;
修改if ( connectionType == "Oracle Spatial" || connectionType.contains("Oracle"))
连接后Open,如果没有规定格式的表,则会报无效的数据源的错误提示;
正常显示如下:
添加Oracle空间图层效果如下:
添加Oracle GeoRaster图层失败了,这个不知道是环境库的问题,还是什么折腾很久也没弄出来!
GeoRaster库应该是gdal_GEOR.dll,ogr_OCI.dll,不知道是不是,希望知道的解答下。