MDB,Oracle空间数据库访问及图层数据的处理
来源:互联网 发布:win8无法运行软件 编辑:程序博客网 时间:2024/05/29 17:42
#region 取得ForeStar.Data.General 工作空间 mdb或zdb /// <summary> /// 取得ForeStar.Data.General 工作空间 mdb或zdb /// </summary> /// <param name="strFileName"></param> /// <param name="pTyep"></param> /// <returns></returns> private static IWorkspace GetAdoWorkspace(string strFileName, WorkspaceType pTyep) { IWorkspaceFactory pWorkspaceFactory = ContextRegistry.GetContext().GetObject("WorkspaceFactory_ADO") as IWorkspaceFactory; ConnectionInfo pcon = new ConnectionInfo(); pcon.Database = strFileName; pcon.WorkspaceType = pTyep; IWorkspace pWorkspace = pWorkspaceFactory.OpenWorkspace(pcon); return pWorkspace; } #endregion #region 创建临时MDB文件 private static bool CreateEmptyMDB(string strMdbPath) { //在此处为临时mdb文件命名 strTempMdbName = Guid.NewGuid().ToString() + ".mdb"; if (string.IsNullOrEmpty(strMdbPath)) { MessageManager.Show("路径为空,不能创建数据源。", "系统提示"); return false; } if (System.IO.File.Exists(strMdbPath)) { if (MessageManager.Show(ForeStar.CoreUI.Message.MessageType.Warning, "指定定路径下已存在工程文件,是否覆盖?", "系统提示", MessageButton.YesNo) == MessageResult.No) { return false; } } try { ESRI.ArcGIS.Geodatabase.IWorkspaceFactory pWsF = new ESRI.ArcGIS.DataSourcesGDB.AccessWorkspaceFactoryClass(); ESRI.ArcGIS.Geodatabase.IWorkspaceName pWorkspaceName = pWsF.Create(strMdbPath, strTempMdbName, null, 0); return true; } catch (Exception ex) { ForeStar.CoreUI.Message.MessageManager.Show(ForeStar.CoreUI.Message.MessageType.Error, "创建目标数据库失败!原因:\r\n" + ex.ToString(), "系统提示"); return false; } //finally //{ //} } #endregion #region 取得 ESRI.ArcGIS.Geodatabase.IWorkspace mdb工作空间 /// <summary> /// 取得 ESRI.ArcGIS.Geodatabase.IWorkspace mdb工作空间 /// </summary> /// <returns></returns> private static ESRI.ArcGIS.Geodatabase.IWorkspace GetMdbWorkspace(string mdbPath) { ESRI.ArcGIS.Geodatabase.IWorkspaceFactory pFactory = new ESRI.ArcGIS.DataSourcesGDB.AccessWorkspaceFactoryClass(); ESRI.ArcGIS.Geodatabase.IWorkspace pWorkspace = null; if (mdbPath != null) { pWorkspace = pFactory.OpenFromFile(mdbPath, 0); } return pWorkspace; } #endregion #region 返回IPropertySet对象 /// <summary> /// 返回IPropertySet对象 /// </summary> /// <param name="_pServerIP"></param> /// <param name="_pInstance"></param> /// <param name="_pUser"></param> /// <param name="_pPassword"></param> /// <param name="_pVersion"></param> /// <param name="_pDatabase"></param> /// <param name="_pTrue"></param> /// <returns></returns> public static ESRI.ArcGIS.esriSystem.IPropertySet GetPropertySet(String _pServerIP, String _pInstance, String _pUser, String _pPassword, String _pVersion, string _pDatabase, bool _pTrue) { ESRI.ArcGIS.esriSystem.IPropertySet pPropertySet = new ESRI.ArcGIS.esriSystem.PropertySetClass(); if (_pTrue) { pPropertySet.SetProperty("SERVER", _pServerIP); pPropertySet.SetProperty("INSTANCE", "sde:oracle11g:" + _pInstance); pPropertySet.SetProperty("USER", _pUser); pPropertySet.SetProperty("PASSWORD", _pPassword); pPropertySet.SetProperty("DATABASE", _pDatabase); pPropertySet.SetProperty("VERSION", _pVersion); } else { } return pPropertySet; } #endregion #region 取得 ESRI.ArcGIS.Geodatabase.IWorkspace oracle工作空间 /// <summary> /// 取得 ESRI.ArcGIS.Geodatabase.IWorkspace oracle工作空间 /// </summary> /// <returns></returns> public static ESRI.ArcGIS.Geodatabase.IWorkspace GetOracleWorkspace(ESRI.ArcGIS.esriSystem.IPropertySet pPropertySet) { ESRI.ArcGIS.Geodatabase.IWorkspaceFactory workspaceFactory = new ESRI.ArcGIS.DataSourcesGDB.SdeWorkspaceFactoryClass(); gisWorkspace = workspaceFactory.Open(pPropertySet, 0); return gisWorkspace; } #endregion #region 判断图层在oracle数据库中是否存在 /// <summary> /// 判断某图层在数据库中是否存在 /// </summary> /// <param name="layerName"></param> /// <param name="conn"></param> /// <returns></returns> public static bool IsExistLayer(ESRI.ArcGIS.Geodatabase.IWorkspace pWs,string layerName ) { bool IsExist = false; ESRI.ArcGIS.Geodatabase.IEnumDataset pEDataset = pWs.get_Datasets(ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTAny); ESRI.ArcGIS.Geodatabase.IDataset pDataset = pEDataset.Next(); while (pDataset != null) { if (pDataset.Type == ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTFeatureClass) { strLayerName.Add(pDataset.Name); } //如果是数据集 else if (pDataset.Type == ESRI.ArcGIS.Geodatabase.esriDatasetType.esriDTFeatureDataset) { ESRI.ArcGIS.Geodatabase.IEnumDataset pESubDataset = pDataset.Subsets; ESRI.ArcGIS.Geodatabase.IDataset pSubDataset = pESubDataset.Next(); while (pSubDataset != null) { strLayerName.Add(pSubDataset.Name); pSubDataset = pESubDataset.Next(); } } pDataset = pEDataset.Next(); } foreach (string lyrName in strLayerName) { if (lyrName == layerName) { IsExist = true; break; } } return IsExist; } #endregion #region 删除oracle数据库中指定图层的记录 private void DelTableRecords(ESRI.ArcGIS.Geodatabase.IWorkspace pOracleWs, string LayerName, ESRI.ArcGIS.Geodatabase.IQueryFilter pFilter) { ESRI.ArcGIS.Geodatabase.IFeatureWorkspace pOracleFWs = pOracleWs as ESRI.ArcGIS.Geodatabase.IFeatureWorkspace; ESRI.ArcGIS.Geodatabase.ITable pOracleTable = pOracleFWs.OpenTable(LayerName); ESRI.ArcGIS.Geodatabase.IWorkspaceEdit workSpaceEdit = pOracleWs as ESRI.ArcGIS.Geodatabase.IWorkspaceEdit; workSpaceEdit.StartEditing(false); workSpaceEdit.StartEditOperation(); pOracleTable.DeleteSearchedRows(pFilter); workSpaceEdit.StopEditing(true); workSpaceEdit.StopEditOperation(); } #endregion #region 删除IWorkspace中某图层 /// <summary> /// 删除IWorkspace中某图层 /// </summary> /// <param name="FcName"></param> public void DeleFeatureClass(ESRI.ArcGIS.Geodatabase.IWorkspace pWs, string FcName) { ESRI.ArcGIS.Geodatabase.IFeatureWorkspace pFWs = pWs as ESRI.ArcGIS.Geodatabase.IFeatureWorkspace; ESRI.ArcGIS.Geodatabase.IFeatureClass pFClass = pFWs.OpenFeatureClass(FcName); ESRI.ArcGIS.Geodatabase.IDataset pDatset = pFClass as ESRI.ArcGIS.Geodatabase.IDataset; pDatset.Delete(); } #endregion
0 0
- MDB,Oracle空间数据库访问及图层数据的处理
- DataConvert,实现MDB到Oracle属性、空间数据的插入
- oracle数据库的MDB函数
- 连接数据库,OleDbDataReader读取mdb的数据
- pear mdb 数据库抽象层
- 数据访问层异常处理
- Oracle数据库表空间的数据转换
- Geoserver 连接oracle空间数据库,无法显示图层
- Oracle数据库创建表空间、用户及数据的导入、导出【源自于实战】
- 解析数据访问层操作数据库的方式
- 创建数据访问层(及三层间的关系)
- mdb数据库的操作
- SQL server与MDB数据库的数据交换问题
- 往SDE和MDB数据库加载数据的问题
- PetShop数据访问层之消息处理
- PetShop数据访问层之消息处理
- PetShop数据访问层之消息处理
- PetShop数据访问层之消息处理
- hibernate学习之路(hibernate入门配置)
- android中的lint工具
- Unity5.2的广告类使用(Unity-ads)
- Linux设备模型--kobject & kset
- ios 随记
- MDB,Oracle空间数据库访问及图层数据的处理
- Item 35:考虑虚函数的其他替代设计 Effective C++笔记
- 高并发Web服务的演变:节约系统内存和CPU
- <Errors running builder 'Android Resource Manager' on project XXX>错误解决方法
- JS防止刷新,后退,关闭
- Hibernate 不同数据库的连接及SQL方言
- 机器学习经典书籍
- Linux下守护进程的实现
- iOS 从工程中删除Cocoapods