当前位置: 首页 > Web前端 > HTML

使用ABAP(ADBC)和Java(JDBC)连接SAPHANA数据库

时间:2023-04-02 20:14:26 HTML

在表DBCON中维护一条记录指向HANA数据库。con_ENV填写HANA数据库的主机名和端口号。如vmXXXX:30015DATA:ls_newTYPEDBCON.ls_new-con_name='HAN'.ls_new-dbms='HDB'.ls_new-user_name='system'.ls_new-password='Sap12345'.ls_new-con_env='vml2018:30015'.CALLFUNCTION'DBCON_INSERT'EXPORTINGDBCON_WORKAREA=ls_newEXCEPTIONSDBCON_KEY_EXISTS=1SECURE_STORE_KEY_EXISTS=2SECURE_STORE_OTHER=3OTHERS=4.IFSY-SUBRC=0.WRITE:/'InsertSuccessfully'.ENDIF.然后使用ABAP代码,插入三条入口进行,再读出来,最后删除table.TYPES:BEGINOFresult_t,keyTYPEi,valueTYPEstring,ENDOFresult_t.DATA:connectionTYPEdbcon-con_nameVALUE'HAN',stmt_refTYPEREFTOcl_sql_statement,cx_sql_exceptionTYPEREFTOcx_sql_exception,lv_textTYPEstring,res_refTYPEREFTOcl_sql_result_set,d_refTYPEREFTODATA,result_tabTYPETABLEOFresult_t,result_lineTYPEresult_t,row_cntTYPEi,con_refTYPEREFTOcl_sql_connection.con_ref=cl_sql_connection=>get_connection(connection).stmt_ref=con_ref->create_statement().TRY。stmt_ref->execute_ddl('CREATETABLEI042416_TESTPROC_TAB(keyINTPRIMARYKEY,valueNVARCHAR(255))').stmt_ref->execute_update('INSERTINTOI042416_TESTPROC_TABVALUES(1,''Firstvalue'')').stmt_ref->execute_update('INSERTINTOI042416_TESTPROC_TABVALUES(2,''第二个值'')').stmt_ref->execute_update('INSERTINTOI042416_TESTPROC_TABVALUES(3,''Thirdvalue'')').res_ref=stmt_ref->execute_query('SELECT*FROMI042416_TESTPROC_TAB').将result_tab的引用获取到d_ref。res_ref->set_param_table(d_ref)。row_cnt=res_ref->next_package()。stmt_ref->execute_ddl('DROPTABLEI042416_TESTPROC_TAB').CATCHcx_sql_exceptionINTOcx_sql_exception。lv_text=cx_sql_exception->get_text()。WRITE:/'Error:',lv_text.ENDTRY.LOOPATresult_tab进入result_line。WRITE:/'Key:',result_line-key,'Value:',result_line-value.ENDLOOP。Java实现类似:publicstaticvoidmain(String[]args){try{Class.forName("com.sap.db.jdbc.Driver");System.out.println("创建连接...");con=(com.sap.db.jdbc.trace.Connection)DriverManager.getConnection("jdbc:sap://:30015",//,"system","这里填写登录密码");cs=(com.sap.db.jdbc.trace.CallableStatement)con.prepareCall("callI042416_two_par(NULL,NULL)");cs.execute();整数索引=0;做{introwCount=0;com.sap.db.jdbc.trace.ResultSetrs=(com.sap.db.jdbc.trace.ResultSet)cs.getResultSet();结果集元数据元数据=rs.getMetaData();intcolumnCount=metaData.getColumnCount();while(rs!=null&&rs.next()){for(inti=1;i<=columnCount;i++){System.out.print(rs.getString(i)+"");if(i==columnCount){System.out.println();}}System.out.println("当前结果集索引:"+index+"行数:"+rowCount++);}System.out.println("结果集索引:"+index++);}while(cs.getMoreResults());}控制台打印结果:可以通过JDBC成功从HANA数据库读取数据

最新推荐
猜你喜欢