当前位置: 首页 > 面试题库 >

使用JAVA在HANA中插入数组

孔茂
2023-03-14
问题内容

我有对象的arraylist,并尝试将列表插入HANA。所以我的插入代码看起来像

PreparedStatement stmt = conn
        .prepareStatement("INSERT INTO SCHEMA.TABLE VALUES"
                + " (?, ?, ?, ?, ?, ?, ?, ARRAY("+"1,2,3"+")");

for (int i = 1; i <= ITERATION_MAX; i++) {

    stmt.setInt(1, listofdata.get(i).get_id());
    stmt.setInt(2, listofdata.get(i).get_name());
    stmt.setInt(3, listofdata.get(i).get_place());
    stmt.setInt(4, listofdata.get(i).get_year());
    stmt.setInt(5, listofdata.get(i).get_day());
    stmt.setInt(6, listofdata.get(i).get_rollno());
    stmt.setInt(7, listofdata.get(i).get_main_subject());
    stmt.setArray(8, listofdata.get(i).get_elective());

    stmt.addBatch();

}

   stmt.executeBatch();

这里
listofdata.get(i).get_elective()

返回一个整数数组。

但这无法正常工作。根据我的程序每次都会调用ARRAY函数,但是为什么不将其插入HANA数据库中呢,所以过了一会儿我才知道我必须将JAVA
Array转换为HANA Array。如何转换Java Array到HANA阵列。任何帮助表示赞赏。


问题答案:

@RKR好的,这里有您的示例:

     /*
     * We're goin to insert several arrays into the HANA table, 
     * with different lengths
     * 
     * let's assume we already got a table like this
     * CREATE COLUMN TABLE T3 ( ID INT PRIMARY KEY, C1 INT ARRAY );
     */

    Integer[][] myarr ={ {1}, {1,2}, {1,2,3,4,5}, {1,2}, {1,2,3} };

    String testSection = "Insert Arrays one by one";
    stopWatch.start(testSection);
    myDBconn.setAutoCommit(false);

    Statement stmt = myDBconn.createStatement();

    stmt = myDBconn.createStatement();

    stmt.execute("TRUNCATE TABLE DEVDUDE.T3");

    // loop over our array of arrays and visit each once
    for (int i = 0 ; i < (myarr.length); i++) {
        int curr_length = myarr[i].length;

        String arrayFunction = "ARRAY (";

        for (int j = 0; j < (curr_length); j++){

            arrayFunction = arrayFunction.concat(myarr[i][j].toString()) ;

            // add comma if this is not the last element
            if (j < (curr_length - 1)){
                arrayFunction = arrayFunction.concat(", ") ;
            }
        }

        arrayFunction = arrayFunction + ")" ;
        // now the arrayFunction should loook like this
        // ARRAY ( ..., .... ,... )

        String insCMD = "INSERT INTO T3 (id, c1) "
                        + " VALUES (" + i + ", " 
                        + arrayFunction 
                        + " ) ";

        System.out.println(insCMD);
        int affectedRows = stmt.executeUpdate(insCMD);

        System.out.println("Loop round " + i
                    + ", last affected row count " + affectedRows);
        }


    myDBconn.commit();
    stmt.close();
    stmt = null;

不,这个代码并 不能 净化输入到INSERT语句,但有以待进行,以避免SQL注入。

当我运行代码时,将输出以下内容:

INSERT INTO T3 (id, c1)  VALUES (0, ARRAY (1) ) 
Loop round 0, last affected row count 1
INSERT INTO T3 (id, c1)  VALUES (1, ARRAY (1, 2) ) 
Loop round 1, last affected row count 1
INSERT INTO T3 (id, c1)  VALUES (2, ARRAY (1, 2, 3, 4, 5) ) 
Loop round 2, last affected row count 1
INSERT INTO T3 (id, c1)  VALUES (3, ARRAY (1, 2) ) 
Loop round 3, last affected row count 1
INSERT INTO T3 (id, c1)  VALUES (4, ARRAY (1, 2, 3) ) 
Loop round 4, last affected row count 1

并在表上的SELECT返回:

ID  C1           
0   1            
1   1, 2         
2   1, 2, 3, 4, 5
3   1, 2         
4   1, 2, 3


 类似资料:
  • 我是mongoDB的新手,但我对couchDB非常了解。在couchdb中,我们有JSONObject和JSONArray,所以我们可以轻松地在文档中插入任何内容,比如 我想做下面这样的事情 所以这里有一个字符串列表,也可以是jsonarray或任何字符串数组,整数类型,这个数组放在文档的键名“master”上。 这是关于如何在mongodb中插入数组的全部想法。 我使用BasicBobObjec

  • 我正在尝试使用Java jdbc连接在mysql数据库中插入一行。。。。 这是我的密码, } 当我尝试运行代码时,我得到类强制转换异常。。。非常感谢您的帮助。这是我的学生。java类 } 当我运行代码时,我得到以下错误:线程“main”java中出现异常。lang.ClassCastException:类java。util。日期不能转换为java类。sql。jdbcsample中的日期(java.

  • 本文向大家介绍在SAP HANA中使用Information Composer,包括了在SAP HANA中使用Information Composer的使用技巧和注意事项,需要的朋友参考一下 Information Composer是SAP HANA系统中的自助式BI报告和建模工具。使用Information Composer,最终用户可以使用.csv和.xls文件将数据导入HANA系统,并可以使

  • 我正在尝试使用hector API将数据插入到cassandra数据库中。下面显示了我使用的代码。 但是在给定的keyspace下的/var/lib/cassandra/data文件夹中找不到任何插入的数据。数据插入似乎不能正常工作。代码有什么问题。下面显示了我用来创建'data'列族的命令。

  • 我是Java新手,在将动态数据插入Excel文件时遇到问题。下面是下面的代码。如果我删除我的excel文件并重新运行我的程序。然后它会创建一个新的文件,也会插入下面的数据。(hello,goodbye,true,date)。在第一次运行期间,程序仍然可以插入下面的数据,但是当我执行下一次运行时,数据不能存储到下一行。这是下面的代码来检查文件是否存在。我希望我可以得到一个人来帮助我,因为我正在为这段