Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在数据库的循环中插入数组_Java_Jdbc_Connection_Database Connection_Hana - Fatal编程技术网

Java 如何在数据库的循环中插入数组

Java 如何在数据库的循环中插入数组,java,jdbc,connection,database-connection,hana,Java,Jdbc,Connection,Database Connection,Hana,我想在循环中将一组数组插入数据库(HANA)。我的代码如下: public class jdemo { public static void main(String[] args) { Connection connection = null; try { connection = DriverManager.getConnection( "jdbc:sap://myhdb:30715/?

我想在循环中将一组数组插入数据库(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};
不支持此返回的方法创建连接数组

我的表模式看起来像

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}
我还希望我的数据类型是整数数组。非常感谢您的帮助。

只是一个想法:

您可以保存一个以冒号分隔的字符串,而不是在列中存储数组。当您从数据库中查询数据时,您可以使用,并且您会自动获得所需的数组(之后)

您使用的是createStatement而不是prepareStatement。 createStatement不支持参数

检查

详情 希望这有帮助

如果您提供DDL、错误消息等,那就太好了。 下一次,分析起来就容易多了。

关于“将数组插入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)数组基本上可以在内部(存储过程中)使用,但它们不是一级公民数据类型。(您的TABLE1模式是什么样子的?控制台是否有任何输出?例如,任何异常或连接成功的消息?您不能使用一对多关系吗?您说的“这不起作用”是什么意思?您是否遇到异常,或者是否发生意外情况?请具体说明。您可能希望用
e.printStackTrace()替换
System.err.println(“查询失败!”);
或记录异常。但我想以数组格式存储数据,因为数据不仅由程序使用。还有其他几个程序(不是Java)也使用我插入的数据。因此我无法更改数据类型。@RKR您应该将此数据写入您的问题,您必须使用该架构