代码
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;
}