SAS数据分析,C#操作的一些辅助代码(重发)。
<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SASWorkspaceManager;

namespace SASShare


{
public class Connection

{

/**//// <summary>
/// 默认创建本地连接
/// </summary>
public Connection()
: this(null, 0, "", "", Protocols.ProtocolBridge)

{}

public Connection(string serverIP, short serverPort, string userName, string userPass, Protocols protocols)

{
this._serverIP = serverIP;
this._serverPort = serverPort;
this._userName = userName;
this._userPassword = userPass;
this._protocals = protocols;
}

private string _serverIP = string.Empty, _userName = string.Empty, _userPassword = string.Empty;

/**//// <summary>
/// 用户密码
/// </summary>
public string UserPassword

{

get
{ return _userPassword; }

set
{ _userPassword = value; }
}

/**//// <summary>
/// 用户名
/// </summary>
public string UserName

{

get
{ return _userName; }

set
{ _userName = value; }
}

/**//// <summary>
/// 服务器地址
/// </summary>
public string ServerIP

{

get
{ return _serverIP; }

set
{ _serverIP = value; }
}
private short _serverPort;

/**//// <summary>
/// 连接端口号
/// </summary>
public short ServerPort

{

get
{ return _serverPort; }

set
{ _serverPort = value; }
}

private Protocols _protocals;

/**//// <summary>
/// 连接协议
/// </summary>
public Protocols Protocals

{

get
{ return _protocals; }

set
{ _protocals = value; }
}

public SASProvider CreateSASProvider()

{
return new SASProvider(this);
}
}
}




























































































































<!--<br /><br />Code highlighting produced by Actipro CodeHighlighter (freeware)<br />http://www.CodeHighlighter.com/<br /><br />-->
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SASWorkspaceManager;
using SAS;
using System.IO;
using System.Data.OleDb;

namespace SASShare


{
public class SASProvider

{
private IWorkspace workSpace;
public IWorkspace WorkSpace

{

get
{ return workSpace; }

set
{ workSpace = value; }
}

private Connection _connection;

public Connection Connection

{

get
{ return _connection; }
}
string message;

WorkspaceManager _workspaceManager = new SASWorkspaceManager.WorkspaceManager();

public delegate void SASErrorEventHandler(object sender, SASErrorEventArgs args);


/**//// <summary>
/// 执行出错事件
/// </summary>
public event SASErrorEventHandler OnError;

internal SASProvider(Connection connection)

{
_connection = connection;
}


/**//// <summary>
/// 运行SAS程序
/// </summary>
/// <param name="sasCommand"></param>
public void Submit(string sasCommand)

{
IServerDef2 _serverDef = null;
if (!string.IsNullOrEmpty(_connection.ServerIP))

{
_serverDef = new SASWorkspaceManager.ServerDefClass();
_serverDef.Port = Connection.ServerPort;
_serverDef.Protocol = Connection.Protocals;
_serverDef.MachineDNSName = Connection.ServerIP;
}
workSpace = _workspaceManager.Workspaces.CreateWorkspaceByServer("_LOCAL_", SASWorkspaceManager.Visibility.VisibilityProcess, _serverDef, _connection.UserName, _connection.UserPassword, out message);
try

{
workSpace.LanguageService.Submit(sasCommand);
}
catch (Exception e)

{
FireEvent(this, e);
}
finally

{
workSpace.Close();
}
}


/**//// <summary>
/// 运行SAS文件
/// </summary>
/// <param name="path"></param>
public void RunSasFile(string path)

{
if (File.Exists(path))

{
string command = File.ReadAllText(path);
Submit(command);
}
}


/**//// <summary>
/// 查询结果集
/// </summary>
/// <param name="libname">分配逻辑库引用名</param>
/// <param name="command"></param>
/// <returns></returns>
public System.Data.DataSet GetResults(string libname, string command)































































































































