2023年11月23日发(作者:)
AE中加载个⼈数据库MDB的三种⽅法.(转)
个⼈数据库MDB是保存在Access中的数据库。
A. 通过设置属性加载个⼈数据库.
public void AddAccessDBByPro()
{
IPropertySet Propset = new PropertySetClass();
perty("DATABASE",@"D:" );
IWorkspaceFactory Fact = new AccessWorkspaceFactoryClass ();
IFeatureWorkspace Workspace = (Propset,0) as IFeatureWorkspace;
IFeatureClass Fcls = atureClass ("District");
IFeatureLayer Fly = new FeatureLayerClass();
eClass = Fcls;
er(Fly);
h();
}
⾸先通过IPropertySet接⼝定义要连接数据库的⼀些相关属性,在个⼈数据库中为数据库的路径,例如:
IPropertySet Propset = new PropertySetClass();
perty("DATABASE",@"D:" );
当定义完属性并设置属性后就可以进⾏打开数据库的操作了. IWorkspaceFactory是⼀个⽤于创建和打开⼯作空间的接⼝,
它是⼀个抽象的接⼝,我们在具体应⽤时要⽤对应的⼯作空间实例化它,如下:
IWorkspaceFactory Fact = new AccessWorkspaceFactoryClass ();
如果我们打开的是SDE数据库就要⽤SdeWorkspaceFactoryClass实例化Fact。当我们完成了⼯作空间的实例化后就可以根据
上边设置的属性打开对应的Access数据库了。打开⽅式如下:
IFeatureWorkspace Workspace = (Propset,0) as IFeatureWorkspace;
打开Access⼯作空间后接下来的事情是做什么了,很简单,找到对应的地物类,赋给相应的层,通过MapControl控件添加对
应的层,然后刷新地图。
B. 通过数据库名字加载个⼈数据库.
public void AddAccessDBByName()
{
IWorkspaceName pWorkspaceName = new WorkspaceNameClass() ;
IFeatureLayer Fly = new FeatureLayerClass();
eClass = Fcls;
er (Fly);
h();
}
⾸先是创建⼀个个⼈数据库⼯作空间名,在指定⼯作空间名的ProgID,以确定打开的是什么类型的⼯作空间,例如在打开
Access个⼈数据库时使⽤的是下边的代码:
IWorkspaceName pWorkspaceName = new WorkspaceNameClass() ;
aceFactoryProgID = "WorkspaceFactory";
me = @"D:";
属性WorkspaceFactoryProgID可以确保⼯作空间是AccessWorkspaceFactory,即个⼈数据库,同时指定要打开数据库的路
径。为了打开数据库,我们通过AE的类图可以发现打开⼯作空间必须使⽤IName接⼝. 所以接着定义IName对象,并把⼯作空
间名转换成IName类型并赋值给IName对象,然后通过IName对象的Open()⽅法打开相应的⼯作空间,代码如下:
IName n = pWorkspaceName as IName ;
IFeatureWorkspace Workspace = () as IFeatureWorkspace;
C. 直接⽤路径访问数据库.
public void AddAccessDBByName()
{
IWorkspaceFactory pWorkspaceFactory = new AccessWorkspaceFactoryClass();
IWorkspace pWorkspace = omFile(pPath, 0);
IRasterWorkspaceEx pRasterWorkspaceEx = pWorkspace as IRasterWorkspaceEx;
IRasterDataset pRasterDataset = sterDataset(pName);
IRasterLayer pRasterLayer = new RasterLayerClass();
FromDataset(pRasterDataset);
= pName;
er(pRasterLayer, ount);
}
发布评论