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

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

景阳曜
2023-03-14
问题内容

我想在循环中将一组数组插入数据库(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};

不支持此返回方法的Connection创建数组。

我的表架构看起来像

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)数组基本上可以在内部(在存储过程中)使用,但是它们不是一等公民数据类型。(<-这是我的意见!)



 类似资料:
  • 您好,我当前正在尝试将从XML文件获取的数据插入到我的MySql数据库中。我使用sails.js和waterline进行查询。我的表是用户和宠物,一个用户可以有多个宠物,一个宠物可以有多个用户(所有者),所以我的联接表是users_pets。 -我将XML文件转换为javascript对象,并循环使用它来插入数据。我的问题是我需要循环是异步的,因为我不希望在pets表中有重复的记录。对于每次迭代,

  • 我从复选框中得到了这个数组 PHP查询 我希望插入数组中的数据,而不是在每一行上插入数据。我希望数据以逗号分隔,如data1、data2、data3,然后插入它。

  • 问题内容: 嗨,我正在尝试将json数组插入我的MySQL数据库。我从我的iPhone传递数据,我已经将数据转换为json格式,并使用未插入服务器的url将数据传递到服务器。 这是我的json数据。 [{“ name”:“ 0”,“ phone”:“ dsf”,“ city”:“ sdfsdf”,“ email”:“ dsf”},{“ name”:“ 13123123”,“ phone”:“ sd

  • 问题内容: 我使用的 春天3,JPA + Hibernate的 一个应用。在该应用程序中,我有一个服务类方法,该方法用具有属性的Annotation进行注释。在该方法内部,我正在使用循环将数据(即实体类)插入表中。对于每个循环实体类,必须将其保存到数据库。但这没有发生。仅当循环执行完成并从方法退出时,才会执行提交。然后,它提交并立即保存所有内容。但是在这种情况下,在提交数据之前,我需要先读取数据。

  • 问题内容: 我想在我的MySQL数据库中插入整数188和90,但以下代码不起作用: 为什么不起作用? 问题答案: 编辑 为我工作: 在MySQL表;

  • 当前,我有一个数组,当通过print_r()输出时,该数组如下所示; 我想将此数据插入到一个表中,每个元素值都属于其各自的字段。 问候。