加载中…
正文 字体大小:

使用AO连接ORACLE数据库

(2006-06-06 21:26:12)
转载
昨天做了个程序,是将一个本地SHP文件和一个SDE上的表进行匹配比较,然后生成一个新的SDE要素类。其中涉级到使用AO连接ORACLE数据库的问题和如何从数据库中取出一个表的操作,代码贴下来给大家看看:
连接数据库,首先需要了解AO操作数据的基本流程:AO的geodatabase数据模型具有独立性,与具体的存储介质无关,即无论是数据库管理还是文件存储数据,AO都是使用相同的操作方式来管理数据的。在geodatabase中,workspace相当于一个数据库,这个数据库存储的东西很多,如要素数据集、要素类,栅格数据集,表等等。(具体的可看OMD图)
1.使用AO连接到SDE+ORACLE数据库
Private Sub getSDETable()
使用SDE的工作空间工厂,不同类型的数据库连接的时侯使用不同的工厂对象
Dim pWorkspaceFactory As IWorkspaceFactory
pWorkspaceFactory = New SdeWorkspaceFactory
Dim pPropertySet As IPropertySet
pPropertySet = New PropertySet
With pPropertySet
.SetProperty("Server", "data") 服务器
.SetProperty("Instance", "5151/tcp") 实例
.SetProperty("user", "sde") SDE数据表空间的用户名
.SetProperty("password", "sde")
.SetProperty("version", "sde.DEFAULT") 默认版本
End With
定义要素工作空间
Dim pSdeWorkspace As IFeatureWorkspace
Try
pSdeWorkspace = pWorkspaceFactory.Open(pPropertySet, 0)
Catch ex As Exception
MessageBox.Show("SDE Cann't Connection")
End Try
取出一个表
Dim pTable As ITable
pTable = pSdeWorkspace.OpenTable("NHGTWEB.WEB_YQLJ")
If pTable Is Nothing Then
MessageBox.Show("Connection Error")
Else
看取出每条记录的方法
Dim pCursor As ICursor
pCursor = pTable.Search(Nothing, False)
Dim pRow As IRow
pRow = pCursor.NextRow
Do While Not pRow Is Nothing
取出表中的每一条记录,加到一个COMBOBOX中去
UiComboBox1.Items.Add(pRow.Value(2))
pRow = pCursor.NextRow
Loop
End If
End Sub
如果要去要素类很多帮助里面都可以看到,可是取一个table就没看到过例子,我其实对于取一个表要通过ifeatureworkspace接口也是很迷惑,因为在OMD图中,featureclass是table的子类,这样在workspace里面应该有专门管理table的接口,但是没有哦。
2.使用AO连接普通的ORACLE数据库
Private Sub getORACLE()
Dim pWorkspaceFactory As IWorkspaceFactory
pWorkspaceFactory = New OLEDBWorkspaceFactory
Dim pPropertySet As IPropertySet
pPropertySet = New PropertySet
pPropertySet.SetProperty("CONNECTSTRING", "Provider=oraoledb.oracle;Data Source=nhgtfc;User Id=nhgtfc;Password=nhgtfc")
Dim pWorkspace As IFeatureWorkspace
pWorkspace = pWorkspaceFactory.Open(pPropertySet, 0)
If pWorkspace Is Nothing Then
MessageBox.Show("connect error!")
Else
pTable = pWorkspace.OpenTable("NHGTZYJ_TDJBXX")
End If
End Sub
这里打开工作空间使用的是另一种工作空间工厂,但是打开后使用的方法是一样的。其实无论是那里的表,其管理方法都是一致的。

0

阅读 评论 收藏 转载 喜欢 打印举报
  • 评论加载中,请稍候...
发评论

       

    验证码: 请点击后输入验证码 收听验证码

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 不良信息反馈 电话:4006900000 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有