//////////////////////////////////////////////////////////////////////////// _ _ ____ ____// Project | | | | / ___) / ___)// | | | || | __ | |// | |_| || |_\ || \___// \____/ \____| \ ___) 6.0////! \file UGDatasourceMySQL.h//! \brief UGDatasourceMySQL Class 的接口定义。//! \details 文件详细信息。//! \author cuiwz。//! \attention//! Copyright (c) 1996-2008 SuperMap Software Limited Company. <br>//! All Rights Reserved.//! \version 6.0//////////////////////////////////////////////////////////////////////////#ifndef UGDatasourceMySQL_H#define UGDatasourceMySQL_H#include "Engine/UGDataSource.h"#include "MySQLCI/UGMyCursor.h"namespace UGC{#define DTID_SEQ_NAME _U("SmDatasetID")#define MYSQL_DS_VERSION 70extern "C" ENGINEMYSQL_API UGDataSource* CreateDataSource();extern "C" ENGINEMYSQL_API OgdcDataSource* CreateOgdcDataSource();extern "C" ENGINEMYSQL_API OgdcFeature* CreateOgdcFeature();class UGMetadata;class UGEngineProc;class UGMyConnection;class UGDatasetVectorMySQL;class UGDatasetTopoMySQL;class ENGINEMYSQL_API UGDataSourceMySQL: public UGDataSource{friend class UGDatasetVectorMySQL;friend class UGDatasetTopoMySQL;friend class UGDatasetRasterMySQL;friend class UGSpatialIndexMySQL;friend class UGDomainManagerMySQL;public://! \brief 默认构造函数UGDataSourceMySQL();//! \brief 默认析构函数virtual ~UGDataSourceMySQL();public://! \brief 执行SQL语句,主要用于在数据库级执行的数据操作virtual UGbool Execute(const UGString& strSQL);//! \brief 创建数据源,需要预先设置好连接信息virtual UGbool Create();//! \brief 打开数据源,需要预先设置好连接信息virtual UGbool Open();//! \brief 打开数据源,需要预先设置好连接信息,指定数据集名称返回数据集virtual UGDataset* Open(const UGString& strName);//! \brief 仅仅连接数据库,不刷新数据集等virtual UGbool Connect();//! \brief 数据源是否和数据连接virtual UGbool IsConnected();//! \brief 关闭数据源virtual void Close();//! \brief 不关闭数据源的前提下刷新当前数据源//! \remarks在项目中,会有两个应用服务去修改同一数据库中的数据,A服务新增加一个数据,// B服务希望在不影响当前以打开的地图情况下,刷新出新的数据集对象,以及被删除的对象//! \param aryAddNames[out]需要增加的数据集名数组//! \param aryDelNames[out]需要删除的数据集名数组virtual UGbool RefreshDataSource(UGArray<UGString> &aryAddNames,UGArray<UGString> &aryDelNames);//! \brief 删除当前的数据源(会自动删除所有数据集,最后删除所有系统表和系统对象)//! \remarks 调用此方法后,可以再次创建同参数的数据源virtual UGbool DropDataSource();//! \brief 获取最后更新时间virtual UGTime GetDateLastUpdated() const ;//! \brief 获取创建时间virtual UGTime GetDateCreated() const ;//! \brief 保存数据信息virtual UGbool SaveInfo();//! \brief 修改密码virtual UGbool ChangePassword(const UGString& strNewPassword);//! \brief 删除数据集(通过名称)virtual UGbool DeleteDataset(const UGString& strName);//! \brief 通过DatasetVectorInfo创建数据集virtual UGDatasetVector* CreateDatasetVector(const UGDatasetVectorInfo& vInfo);//! \brief 通过DatasetVectorInfo创建Topo数据集virtual UGDatasetTopo* CreateDatasetTopo(UGString strName);//! \brief 通过DatasetRasterInfo创建数据集virtual UGDatasetRaster* CreateDatasetRaster(const UGDatasetRasterInfo& rInfo,UGbool bIsMBRaster = FALSE);//! \briefvirtual UGEngineProc * GetEngineProc();//! \brief 工作空间关联相关接口virtual UGbool SaveWorkspace(UGDsConnection conn, UGString strWksName,UGint nVersion, UGbyte *pbyte,UGint nbyteSize);//! \brief 加载工作空间virtual UGbool LoadWorkspace(UGDsConnection conn, UGString strWksName,UGint nVersion, UGbyte *&pbyte,UGint &nbyteSize);//! \brief 获取工作空间信息virtual UGbool GetWorkspaceInfo(UGDsConnection conn,UGArray<UGWorkspaceInfo> &wksInfos);//! \brief 删除工作空间信息virtual UGbool DeleteWorkspaceInfo(UGDsConnection conn,UGString strWksName);//! \brief 获取最近工作空间更新的时间virtual UGbool GetWorkspaceLastUpdateTime(UGDsConnection &conn,UGString &strWorkspaceName,UGTime &updateTime);//! \brief 开始事务virtual UGbool BeginTrans();//! \brief 提交事务virtual void Commit();//! \brief 撤消事务virtual void Rollback();//! \brief 是否有执行某些操作的能力virtual UGbool HasAbility(UGEngAbility nAbility) const;//! \brief 是否支持特定的操作virtual UGbool IsSupport(UGEngAction nAction) const;//! \brief 得到各类系统表中序列化字段中的最大值virtual UGint GetMaxTableID();UGbool IsExistedIntValue(UGString strTableName,UGString strFieldName,UGint nValue);//! \brief 设置外挂表//##ModelId=virtual UGDatasetVector* SetExpTable(UGString strTableName);//! \brief 获取用户列表virtual UGStrings GetUserTable();public://! \brief 判断这个表是否存在于当前数据源当中UGbool HaveTable(const UGString& strTableName);//! \brief 判断这个表中是否存在当前索引。UGbool HaveIndex(const UGString& strTableName,const UGString& strIndexName);//! \brief 检查数据集的数据表是否存在。virtual UGbool CheckDatasetTableExist(const UGString& strDatasetName);//! \brief 检查数据集名是否存在//! \attention 引擎内部使用,不开放virtual UGbool CheckDatasetNameExist(const UGString& strDatasetName);//!\brief 获取当前mySQL的引擎类型TABLETYPE GetMySQLEngineType() const { return m_nMySQLEngineType; }//! \brief 获取MySQL默认表引擎字符串。UGString GetMySQLEngineStr() const;//! \brief 设置当前mySQL的引擎类型void SetMySQLEngineType(TABLETYPE val) { m_nMySQLEngineType = val; }//! \brief 修订表名,检查当前表名是否合法。//! \param strName 目标表名[in]。//! \return 修订后的表名。UGString ReviseTableName(const UGString& strName);//! \brief 获取数据源连接指针UGMyConnection * GetConnection();//!\brief 获取当前数据源连接的数据库索引名称是否可用UGbool IsFieldIndexNameExist(const UGString &strIndexName,const UGString& strTableName);protected://! \brief 同引擎复制virtual UGDataset * CopyDatasetLocal(UGDataset *pSrcDataset,const UGString &strDestDatasetName,UGDataCodec::CodecType nCodeType = UGDataCodec::encNONE,UGbool bBuildIndxOrPyramid = FALSE);protected://! \brief 设置数据源信息UGbool SetDatasourceInfo();private://! \brief 链接数据源。//! \return 链接是否成功。//! \remarks 这个函数链接的时候并没有用到数据库这个参数,所以链接后应该//! 使用connectio的UseDataBase。//! \attention 。UGbool ConnectDB();//! \brief 打开vector表。UGbool OpenVectorRegister();//! \brief 打开Img表。UGbool OpenImgRegister();//! \brief 打开DataSource表。UGbool ReadInfo();//! \brief 删除子数据集。//! \param pDataset 子数据集指针[in]。UGbool DeleteSubDataset(UGDatasetVector *pDataset);private://! \brief 当前数据源的链接信息。UGMyConnection *m_pConnection;//! \brief 当前数据源是否连接。UGbool m_bConnected;//! \brief 当前数据源引擎类型的字符串。TABLETYPE m_nMySQLEngineType;public:// 用户额外属性表管理接口virtual UGbool setUserByte(UGint m_nDatasetID ,UGint m_nDatasetType,UGString type,UGbyte* byte,UGint iSize);virtual UGbyte* getUserByte(UGint m_nDatasetID ,UGint m_nDatasetType,UGString type);virtual UGArray<UGString> getUserType(UGint m_nDatasetID ,UGint m_nDatasetType);virtual UGbool CreateUserInfo();virtual UGbool DropUserInfo();};}#endif // !defined(UGDatasourceMySQL_H)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型