您的位置:首页 > 编程语言 > Java开发

SAS JAVA 连接操作

2015-08-12 14:23 936 查看

SAS JAVA 连接介绍

对于JAVA开发,SAS集成技术的特点:

1. SAS的java连接工厂接口可以让java程序通过一个IOM(Integrated Object Model) Bridge 连接和IOM SERVER交流。

2. 通过连接到IOM 服务器,SAS Foundation Service将扩充了java的应用程序开发。

JAVA客户端安装与JRE需求

Java客户端的安装:必须安装SAS Foundation Services.

JRE需求:JRE 5.0 以上

JAVA客户端安全

Java的IOM Bridge通过两层安全解决方案对和IOM Server交流的所有信息进行加密,第一层是SAS专有的加密算法,第二层是包含了RC2,RC4,DE5和Triple DES的加密算法。

连接到IOM Server的流程

1. 从java连接工厂获得一个到IOM Server的连接,然后从IOM Server获得远程对象的引用,封装适当的远程接口。

2. 使用JAVA COREA 的静态方法为IOM对象和JDBC连接对象获得操作SAS的能力。

3. 最后释放连接。

使用java连接工厂

为了连接到IOM Server,需要进行以下步骤:

1. 创建一个连接工厂配置

String classID = Server.CLSID_SAS;
String host = "localhost";
int port = 1234;
Server server = new BridgeServer(classID, host, port);
ConnectionFactoryConfiguration cxfConfig
= new ManualConnectionFactoryConfiguration(server);


2. 创建一个连接工厂

ConnectionFactoryManager cxfManager = new ConnectionFactoryManager();
ConnectionFactoryInterface cxf = cxfManager.getFactory(cxfConfig);

3. 创建连接

String username = "  ";
String password = "  ";
ConnectionInterface cx = cxf.getConnection(username, password);


4. Narrow the connection

org.omg.CORBA.Object obj = cx.getObject();
com.sas.iom.SAS.IWorkspace iworkspace
= com.sas.iom.SAS.IWorkspaceHelper.narrow(obj);
5. 关闭连接

6. 关闭工厂连接

使用直接提供的服务器属性连接

为了连接到IOM服务器,必须提供关于服务器和所需求连接的特殊java连接工厂信息,这包括主机地址,端口,加密方法,加密算法,加密内容等。

连接到一个无配置的Workspace Server

满足的需求:

1. SAS 9.3及以上版本,服务已运行

2. 程序和SAS软件运行在同一台window机器

3. Sspiauth.dll这个文件在系统文件路径中,java.library.path,或者在你的java程序的目录中。

server = new ZeroConfigWorkspaceServer();
config = new ManualConnectionFactoryConfiguration(server);
manager = new ConnectionFactoryManager();
factory = manager.getFactory(config);
cred = new SecurityPackageCredential();
cx = factory.getConnection(cred);
try{
Object obj = cx.getObject();
IWorkspace iworkspace = IWorkspaceHelper.narrow(obj);
//insert iworkspace workspace usage code here
}finally{
cx.close();
}

SASworkspace操作实例

ILanguageService sasLanguage = iWorkspace.LanguageService();
//执行SAS语句
String str = "proc print data=SASHELP.BUY;run;";
sasLanguage.Submit(str1);
IStoredProcessService istored = sasLanguage.StoredProcessService();
IResultPackageHolder iresultpd = new IResultPackageHolder();
//显示日志信息
StringSeqHolder logHldr = new StringSeqHolder();
sasLanguage.FlushLogLines(Integer.MAX_VALUE,
new CarriageControlSeqHolder(), new LineTypeSeqHolder(),
logHldr);
String[] loglines = logHldr.value;
JOptionPane.showMessageDialog(null, loglines);

JAVA对SAS逻辑库表的操作实例

String url = "jdbc:sasiom://192.168.1.189:8591";
String username = "apeng";
String password = "*********";
try {
Class.forName("com.sas.rio.MVADriver");
Connection conn = DriverManager.getConnection(url, username,
password);
Statement stmt = conn.createStatement();
DatabaseMetaData meta = conn.getMetaData();
//获取SAS的逻辑库基本信息 System.out.println("meta.getDriverName()-------"+meta.getDriverName());
System.out.println("meta.getDatabaseProductName()-------"+meta.getDatabaseProductName());
System.out.println("meta.getDatabaseProductVersion()-------"+meta.getDatabaseProductVersion());
System.out.println(meta.allProceduresAreCallable());
System.out.println(meta.getSQLKeywords());
System.out.println(meta.getURL());
ResultSet rs= meta.getTableTypes();
while(rs.next()){
System.out.println(rs.getString(1));
}
System.out.println(meta.getSystemFunctions());


//对表的查询
String sql = "select * from SASHELP.BUY";
rs = stmt.executeQuery(sql);
System.out.println(rs.getMetaData().getColumnName(1));
System.out.println(rs.getMetaData().getColumnName(2));

while (rs.next()) {
System.out.println(rs.getString(1) + "----------"
+ rs.getString(2));
}
//表插入操作
sql = "insert into SASHELP.BUY(AMOUNT) value(-123) ";
System.out.println(stmt.execute(sql));
//表的更新操作
sql = "update SASHELP.BUY set Amount = 123 where Amount = -123";
System.out.println(stmt.execute(sql));
//表的删除操作
sql = "delete * from SASHELP.BUY WHERE Amount=123";
System.out.println(stmt.execute(sql));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: