随遇而安丶 发表于 2019-9-27 15:06:03

SAS JAVA 连接操作


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));
页: [1]
查看完整版本: SAS JAVA 连接操作