之前一直使用的都是oracle,所以接触到DB2的时候还有有点懵,所以暂且在这做一个记录,以防忘记。
DB2与Oracle的不同之处:
1.DB2通过模式来区分同一个数据库下的不同权属的表,Oracle主要是直接通过表空间和用户来区分
2.因为上述原因,DB2在编写SQL语句的时候需要带上模式名
相同的TEST表,在Oracle里是这样的
select * from test
在DB2中必须得加上模式名
select * from XXX.test
基于这种特殊的语句机制,在后台使用JDBC连接数据库进行操作时,便有两种机制:
1.在所有的sql语句中加入模式名
2.在初始化JDBC时,进行标记。其中currentSchema代表的就是模式名,最后的分号也不可省略
jdbc.driverClass=com.ibm.db2.jcc.DB2Driver
jdbc.jdbcUrl=jdbc:db2://10.0.0.1:50000/TEST:currentSchema=XXX;
jdbc.user=db2admin
jdbc.password =db2admin
3.如果要调用DB2的事务,也需要对模式名进行添加
jdbc.jdbcUrl=jdbc:db2://10.46.201.235:50000/TEST:currentSchema=XXX;currentFunctionPath=XXX;
说完一般的数据库操作之后,对DB2的SDE数据库一个整理
通过ArcMap连接DB2 SDE的方式,官方是这样说的
然而,使用语法进行连接没有成功,原因不明。如果想在arcmap中连接DB2 SDE的话,最好就是先在本地用DB2客户端连接到SDE数据库,在使用ArcMap来进行连接,图中的数据源,指的就是连接数据库时,我们指定的名称。
使用JAVA后台去连接SDE时,如果DB2客户端已经添加数据库,则可以直接连接
SDE.Server=10.0.0.1
SDE.Instance=5151
SDE.Database=spatiadata
SDE.User=sde
SDE.Password=sde
SDE.Version=sde.DEFAULT
采用直连的方式,则如下所述
SDE.Server=10.0.0.1
SDE.Instance=sde:db2$HostName=10.0.0.1;Port=50000;Database=XXX
SDE.Database=sde
SDE.User=sde
SDE.Password=sde
SDE.Version=sde.DEFAULT
以上便是对这段时间使用DB2的一个整理,如有错误,敬请指出。