数据库
首页 > 数据库> > java-如何在循环中将数组插入数据库

java-如何在循环中将数组插入数据库

作者:互联网

我想在循环中将一组数组插入数据库(HANA)中,我的代码如下:

public class jdemo {
   public static void main(String[] args) {
      Connection connection = null;
      try {                  
         connection = DriverManager.getConnection(
            "jdbc:sap://myhdb:30715/?autocommit=false",myname,mysecret);                  
      } catch (SQLException e) {
         System.err.println("Connection Failed. User/Passwd Error?");
         return;
      }
      if (connection != null) {
         try {
            int [] array=new int []{1,2,3};
            Array array1= connection.createArrayof("Integer",array)
            System.out.println("Connection to HANA successful!");
            String sql="INSERT INTO TABLE1 VALUES(1,ARRAY(?))"
            PreparedStatement stmt = connection.createStatement(sql);
            stmt.setArray(int,array1);
            stmt.executeUpdate(sql);

       } catch (SQLException e) {
          System.err.println("Query failed!");
       }
     }
   }
}

但这是行不通的.
我尝试过

Object [] array=new Object []{1,2,3};

不支持此返回的方法create连接数组.

我的表架构看起来像

ID   MARK
__   ____
10  {1,2,3}
11  {3,2,3}
12  {9,2,3}
13  {10,2,3}
14  {12,24,3}
18  {1,27,3}

我也希望我的数据类型为整数数组.感谢您的帮助.

解决方法:

这里已经在SO上讨论了“ ARRAY插入HANA”主题.
HANA仅支持通过ARRAY()函数存储数组.此函数不将列表作为参数,而仅将单独的元素作为参数.

所以,代替

 String sql="INSERT INTO TABLE1 VALUES(1,ARRAY(?))"

你将不得不写

String sql="INSERT INTO TABLE1 VALUES(1, ARRAY( 1, 2, 3))"

对于JDBC驱动程序:HANA JDBC不会自动将JAVA数组转换为HANA数组-这是开发人员必须手动执行的操作.
(是的,这不好,我知道).

简而言之:当前(HANA 1.0 SP12)数组基本上可以在内部(在存储过程中)使用,但它们不是一等公民数据类型. (<-这是我的意见!)

标签:java,connection,jdbc,database-connection,hana
来源: https://codeday.me/bug/20191013/1904658.html