通过ArcSDE连接参数创建.sde连接文件

文章目录

代码

/// <summary>
/// 建立SDE文件(需要正确的连接参数)
/// </summary>
/// <param name="path">*.SDE文件的全路径(如已存在则先删除再创建)</param>
/// <param name="server">172.16.50.128</param>
/// <param name="instance">sde:oracle11g:172.16.50.128/orcl</param>
/// <param name="user">sde</param>
/// <param name="password">sde</param>
/// <param name="database">null</param>
/// <param name="version"></param>
/// <returns>创建完成的SDE连接文件全路径</returns>
public static string CreateSDEFile(string path, string server, string instance, string user, string password, string database, string version = "SDE.DEFAULT")
{
	System.IO.FileInfo fileInfo = new System.IO.FileInfo(path);
	var sdeFileName = path;
	if (fileInfo.Extension.ToUpper() != ".SDE")
	{
		System.IO.Directory.CreateDirectory(sdeFileName);
		sdeFileName = System.IO.Path.Combine(sdeFileName, "sde.sde");

	}
	else
	{
		var dir = fileInfo.DirectoryName;
		System.IO.Directory.CreateDirectory(dir);
	}
	var pFileInfo = new System.IO.FileInfo(sdeFileName);
	if (pFileInfo.Exists)
	{
		try
		{
			pFileInfo.Delete();
		}
		catch (Exception)
		{
			throw new Exception($"文件[{fileInfo.FullName}已经被占用]");
		}
	}
	IPropertySet propertySet = new PropertySetClass();
	propertySet.SetProperty("SERVER", server);
	propertySet.SetProperty("INSTANCE", instance);
	propertySet.SetProperty("DATABASE", database);
	propertySet.SetProperty("USER", user);
	propertySet.SetProperty("PASSWORD", password);
	propertySet.SetProperty("VERSION", version);
	using (var comReleaser = new ESRI.ArcGIS.ADF.ComReleaser())
	{
		Type factoryType = Type.GetTypeFromProgID("esriDataSourcesGDB.SdeWorkspaceFactory");
		IWorkspaceFactory workspaceFactory = (IWorkspaceFactory)Activator.CreateInstance(factoryType);
		comReleaser.ManageLifetime(workspaceFactory);
		IWorkspaceName workspaceName = workspaceFactory.Create(pFileInfo.DirectoryName, pFileInfo.Name, propertySet, 0);
		comReleaser.ManageLifetime(workspaceName);
	}
	return sdeFileName;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值