java连接abap_使用ABAP(ADBC)和Java(JDBC)连接SAP HANA数据库

在表DBCON里维护一条记录,指向HANA数据库。con_ENV里填入HANA数据库的主机名和端口号。如vmXXXX:30015

7683836630dafaf1ca61c5a31c8cc7cf.png

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://: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数据库读取出来。

1cb8c43a81f95a7582f1d856e18b8be0.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值