设为首页收藏本站

EPS数据狗论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1452|回复: 0

SAS JAVA 连接操作

[复制链接]

3

主题

29

金钱

50

积分

新手用户

发表于 2019-9-27 15:06:03 | 显示全部楼层 |阅读模式

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. 创建一个连接工厂配置
  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. 创建一个连接工厂
  1. ConnectionFactoryManager cxfManager = new ConnectionFactoryManager();ConnectionFactoryInterface cxf = cxfManager.getFactory(cxfConfig);
复制代码


3. 创建连接
  1. String username = "  ";String password = "  ";ConnectionInterface cx = cxf.getConnection(username, password);
复制代码


4. Narrow the connection
  1. 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程序的目录中。
  1. 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操作实例
  1. 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逻辑库表的操作实例
  1. 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());
复制代码

  1. //对表的查询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 下一条

客服中心
关闭
在线时间:
周一~周五
8:30-17:30
QQ群:
653541906
联系电话:
010-85786021-8017
在线咨询
客服中心

意见反馈|网站地图|手机版|小黑屋|EPS数据狗论坛 ( 京ICP备09019565号-3 )   

Powered by BFIT! X3.4

© 2008-2028 BFIT Inc.

快速回复 返回顶部 返回列表