使用ABAP(ADBC)和Java(JDBC)连接SAP HANA数据库
在表DBCON里维护一条记录,指向HANA数据库。con_ENV里填入HANA数据库的主机名和端口号。如vmXXXX:30015
DATA: ls_new TYPE DBCON. ls_new-con_name = 'HAN'. ls_new-dbms = 'HDB'. ls_new-user_name = 'system'. ls_new-password = 'Sap12345'. ls_new-con_env = 'vml2018:30015'. CALL FUNCTION 'DBCON_INSERT' EXPORTING DBCON_WORKAREA = ls_new EXCEPTIONS DBCON_KEY_EXISTS = 1 SECURE_STORE_KEY_EXISTS = 2 SECURE_STORE_OTHER = 3 OTHERS = 4 . IF SY-SUBRC = 0. WRITE:/ 'Insert Successfully'. ENDIF. 然后使用ABAP代码创建一个新的table,插入三条entry进行,再读出来,最后删除table. TYPES: BEGIN OF result_t, key TYPE i, value TYPE string, END OF result_t. DATA: connection TYPE dbcon-con_name VALUE 'HAN', stmt_ref TYPE REF TO cl_sql_statement, cx_sql_exception TYPE REF TO cx_sql_exception, lv_text TYPE string, res_ref TYPE REF TO cl_sql_result_set, d_ref TYPE REF TO DATA, result_tab TYPE TABLE OF result_t, result_line TYPE result_t, row_cnt TYPE i, con_ref TYPE REF TO cl_sql_connection. con_ref = cl_sql_connection=>get_connection( connection ). stmt_ref = con_ref->create_statement( ). TRY. stmt_ref->execute_ddl( 'CREATE TABLE I042416_TESTPROC_TAB( key INT PRIMARY KEY, value NVARCHAR(255) )' ). stmt_ref->execute_update( 'INSERT INTO I042416_TESTPROC_TAB VALUES(1, ''First value'' )' ). stmt_ref->execute_update( 'INSERT INTO I042416_TESTPROC_TAB VALUES(2, ''Second value'' )' ). stmt_ref->execute_update( 'INSERT INTO I042416_TESTPROC_TAB VALUES(3, ''Third value'' )' ). res_ref = stmt_ref->execute_query( 'SELECT * FROM I042416_TESTPROC_TAB' ). GET REFERENCE OF result_tab INTO d_ref. res_ref->set_param_table( d_ref ). row_cnt = res_ref->next_package( ). stmt_ref->execute_ddl( 'DROP TABLE I042416_TESTPROC_TAB' ). CATCH cx_sql_exception INTO cx_sql_exception. lv_text = cx_sql_exception->get_text( ). WRITE:/ 'Error:' , lv_text. ENDTRY. LOOP AT result_tab INTO result_line. WRITE:/ 'Key:' , result_line-key, ' Value:', result_line-value. ENDLOOP.
Java实现类似:
public static void main(String[] args) { try { Class.forName("com.sap.db.jdbc.Driver"); System.out.println("Create a connection..."); con = (com.sap.db.jdbc.trace.Connection) DriverManager .getConnection("jdbc:sap://<HANA数据库主机名>:30015",// , "system", "此处填入登录密码"); cs = (com.sap.db.jdbc.trace.CallableStatement) con.prepareCall("call I042416_two_par(NULL, NULL)"); cs.execute(); int index = 0; do { int rowCount = 0; com.sap.db.jdbc.trace.ResultSet rs = (com.sap.db.jdbc.trace.ResultSet)cs.getResultSet(); ResultSetMetaData metaData = rs.getMetaData(); int columnCount = metaData.getColumnCount(); while (rs != null && rs.next()) { for (int i = 1; i <= columnCount; i++) { System.out.print(rs.getString(i) + " "); if (i == columnCount) { System.out.println(); } } System.out.println("Current Result Set Index:" + index + " Row Count: " + rowCount++); } System.out.println("Result Set Index: " + index++); } while(cs.getMoreResults()); }
console打印结果:数据能够成功通过JDBC从HANA数据库读取出来。
要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
JavaScript and Ruby in ABAP
Netweaver里有个mini JavaScript engine CL_JAVA_SCRIPT, 对于Js code的编译和执行都是用system call完成。 只能当玩具用:report SJSEU 执行结果:120 在SAP C4C的UI Designer里,event handler里可以写Ruby Script, UI保存时Ruby Script会自动被C4C后台的ABAP程序转换成JavaScript,最后在浏览器里执行的是JavaScript: 关于更多Ruby script在SAP C4C中的应用,请参考我的博客Ruby Script in C4C Oberon View。要获取更多Jerry的原创技术文章,请关注公众号"汪子熙"或者扫描下面二维码:
- 下一篇
思维导图形式带你读完《大型网站技术架构》中
下面所有图片原图及思维导图源文件和软件,欢迎关注我的微信公众号:"Java面试通关手册" 后台回复 “大型网站技术架构” 免费领取。 5 万无一失:网站的高可用架构 6 永无止境:网站的伸缩性架构 7 随机应变:网站的可扩展架构 8 固若金汤:网站的安全架构
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2整合Redis,开启缓存,提高访问速度
- CentOS关闭SELinux安全模块
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS8编译安装MySQL8.0.19
- CentOS7,8上快速安装Gitea,搭建Git服务器
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS6,CentOS7官方镜像安装Oracle11G
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装