C#+ArcEngine创建企业数据库、连接及相关
/// <summary>
/// 创建SQLServer企业数据库(数据库拥有者:DBO)
/// </summary>
public string CreateEnterpriseDB(string sInstance, string sDBName, string sUser, string sPassword, string LienseFilePath)
{
Geoprocessor gp = new Geoprocessor();
gp.OverwriteOutput = true;
ESRI.ArcGIS.DataManagementTools.CreateEnterpriseGeodatabase cedb = new ESRI.ArcGIS.DataManagementTools.CreateEnterpriseGeodatabase();
cedb.database_platform = "SQL_Server";
cedb.instance_name = sInstance;
cedb.database_name = sDBName;
cedb.database_admin = sUser;
cedb.database_admin_password = sPassword;
cedb.sde_schema = "DBO_SCHEMA";
cedb.gdb_admin_name = "";
cedb.gdb_admin_password = "";
cedb.authorization_file = LienseFilePath.ToString();//授权文件,本例用的是ArcGIS 10.2的授权文件
try
{
gp.Execute(cedb, null);
}
catch
{
string str = "";
for (int i = 0; i < gp.MessageCount; i++)
{
str += gp.GetMessage(i);
str += "\n";
}
return str;
}
return null;
}
/// <summary>
/// 创建SQLServer数据库连接
/// </summary>
/// <param name="sInstance">地址</param>
/// <param name="sDBName">数据库名</param>
/// <param name="sUserName">用户名</param>
/// <param name="sPassword">密码</param>
public string CreateSqlConnection(string sInstance, string sDBName, string sUserName, string sPassword, string SdeFilePath)
{
Geoprocessor gp = new Geoprocessor();
gp.OverwriteOutput = true; //覆盖原有文件并重写
ESRI.ArcGIS.DataManagementTools.CreateDatabaseConnection CreateDBConnection = new ESRI.ArcGIS.DataManagementTools.CreateDatabaseConnection();
//设置sde默认文件夹路径
CreateDBConnection.out_folder_path = SdeFilePath;
//数据库连接文件的名称
CreateDBConnection.out_name = "ConnectionTo" + sDBName.ToString();
//数据库连接平台
CreateDBConnection.database_platform = "SQL_SERVER";
//数据库连接实例:本机的IP地址或计算机名
CreateDBConnection.instance = sInstance;
//连接的数据库用户名"sa"
CreateDBConnection.username = sUserName;
//连接的数据库密码"123@abcd"
CreateDBConnection.password = sPassword;
//此数据库为SQL Server 中已经存在的数据库(不是空间库)
CreateDBConnection.database = sDBName;
CreateDBConnection.version_type = "TRANSACTIONAL";
CreateDBConnection.account_authentication = "DATABASE_AUTH";
try
{
gp.Execute(CreateDBConnection, null);
}
catch (Exception E)
{
string str = "";
for (int i = 0; i < gp.MessageCount; i++)
{
str += gp.GetMessage(i);
str += "\n";
}
return str;
}
return null;
}
/// <summary>
/// 创建ORCL数据库连接
/// </summary>
/// <param name="sDBName"></param>
/// <param name="sUserName"></param>
/// <param name="sPassword"></param>
/// <param name="SdeFilePath"></param>
/// <returns></returns>
public string CreateOrclConnection(string sDBName, string sUserName, string sPassword, string SdeFilePath)
{
Geoprocessor GP = new Geoprocessor();
GP.OverwriteOutput = true; //覆盖原有文件并重写
//创建数据库连接文件(.sde)
ESRI.ArcGIS.DataManagementTools.CreateDatabaseConnection createdbconnection = new ESRI.ArcGIS.DataManagementTools.CreateDatabaseConnection();
//设置sde默认文件夹路径
createdbconnection.out_folder_path = SdeFilePath;
//数据库连接文件的名称
createdbconnection.out_name = "ConnectionTo" + sDBName.ToString();
//数据库连接平台
createdbconnection.database_platform = "ORACLE";
//数据库连接实例
createdbconnection.instance = sDBName;
//连接的数据库用户名
createdbconnection.username = sUserName;
//连接的数据库密码
createdbconnection.password = sPassword;
try
{
GP.Execute(createdbconnection, null);
}
catch (Exception E)
{
string str = "";
for (int i = 0; i < GP.MessageCount; i++)
{
str += GP.GetMessage(i);
str += "\n";
}
return str;
}
return null;
}
/// <summary>
/// 数据库转空间库
/// </summary>
public string ConvertDB2GeoDB(string sInstance, string SdeFilePath, string LienseFilePath)
{
//sde文件的全名
string SdeConnFilePathName = SdeFilePath + @"\ConnectionTo" + sInstance + ".sde";
Geoprocessor gp = new Geoprocessor();
gp.OverwriteOutput = true;
ESRI.ArcGIS.DataManagementTools.EnableEnterpriseGeodatabase enabledb = new ESRI.ArcGIS.DataManagementTools.EnableEnterpriseGeodatabase();
//使用上一步创建好的数据库连接文件
enabledb.input_database = SdeConnFilePathName;
enabledb.authorization_file = LienseFilePath.ToString();
try
{
gp.Execute(enabledb, null);
}
catch (Exception e)
{
string str = "";
for (int i = 0; i < gp.MessageCount; i++)
{
str += gp.GetMessage(i);
str += "\n";
}
return str;
}
return null;
}