ArcSDE数据库连接工具类

代码如下:

using ESRI.ArcGIS.DataSourcesGDB;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geodatabase;
using System;

/// <summary>
/// ArcSDE数据库连接工具类
/// </summary>
public class SDEHelper
{
    /// <summary>
    /// 连接到ArcSDE数据库
    /// </summary>
    /// <param name="services">服务名、IP或者"localhost"</param>
    /// <param name="username">SDE数据库用户名</param>
    /// <param name="pwd">SDE数据库用户密码</param>
    /// <returns>返回IWorkspace对象实例</returns>
    public static IWorkspace Connect(string services, string username, string pwd)
    {
        try
        {
            /**连接sde数据库**/
            //License
            IAoInitialize pAoInit = new AoInitializeClass();
            pAoInit.Initialize(esriLicenseProductCode.esriLicenseProductCodeArcView);

            IWorkspaceFactory factory = new SdeWorkspaceFactory();
            IPropertySet set = new PropertySetClass();
            set.SetProperty("INSTANCE", services);
            set.SetProperty("SERVER", "localhost");
            set.SetProperty("USER", username);
            set.SetProperty("PASSWORD", pwd);
            set.SetProperty("VERSION", "sde.DEFAULT");
            return factory.Open(set, 0);
        }
        catch (Exception e)
        {
            Console.WriteLine(e.StackTrace);
            return null;
        }
    }
    /// <summary>
    /// 根据提示获取用户输入内容
    /// </summary>
    /// <param name="info">用户提示信息</param>
    /// <returns>返回用户输入的内容</returns>
    public static string Input(string info)
    {
        Console.Write(info);
        return Console.ReadLine().Trim();
    }
    /// <summary>
    /// 类的主函数入口用于测试
    /// </summary>
    public static void Main()
    {
        string services = Input("请输入服务名:");
        string username = Input("请输入用户名:");
        string pwd = Input("请输入密码:");
        IWorkspace workspace = Connect(services, username, pwd);
        if (workspace != null)
            Console.WriteLine("数据库连接成功!");
        else
            Console.WriteLine("数据库连接失败,请检查输入是否正确!");
    }
}
posted @ 2012-05-19 14:11  痞子笑  阅读(287)  评论(0编辑  收藏  举报