当前位置: 首页 > 知识库问答 >
问题:

将字符串数组列表作为记录插入MySQL数据库

楚苏燕
2023-03-14

我正在做一个项目,将读取Excel电子表格行的每个单元格的内容,并将所有这些信息存储在字符串ArrayList中,然后将所有这些行作为记录插入MySQL数据库。

我有一个方法可以很好地提取这些数据,并返回字符串ArrayList的完整ArrayList。我遇到的问题是试图将这些字符串数组列表作为记录插入SQL数据库。我在运行时得到一个索引越界异常

谁能解释一下我哪里出了问题吗?我认为在我对ArrayList/looping/JDBC/之前的所有内容的理解中存在一些基本缺陷。

public void insertData(ArrayList<ArrayList<String>> l) {
    try {

        String insert = "INSERT INTO 1person (ModuleNumber, ModuleTitle, School, ModuleCoordinator, NumberOfStudents, ExamCW, Courses, Blankety, Blank) VALUES (?,?,?,?,?,?,?,?,?)";
        PreparedStatement ps = con.prepareStatement(insert);

        for (ArrayList<String> ar1 : l) {
            //for(int i = 0; i < ar1.size(); i ++){
            //ps.setString(i+1, ar1.get(i)
            ps.setString(1, ar1.get(0).toString());
            ps.setString(2, ar1.get(1).toString());
            ps.setString(3, ar1.get(2).toString());
            ps.setString(4, ar1.get(3).toString());
            ps.setString(5, ar1.get(4).toString());
            ps.setString(6, ar1.get(5).toString());
            ps.setString(7, ar1.get(6).toString());
            ps.setString(8, ar1.get(7).toString());
            ps.setString(9, ar1.get(8).toString());
            //}

        }
        ps.execute();

    } catch (Exception ex) {
        System.out.println(ex);
    }
}

返回:java.lang.IndexOutOfBounds异常:索引: 8,大小: 8

共有1个答案

汝承载
2023-03-14

您似乎只有8个值,而您应该有9个值(您尝试插入9个值!)

同样,您只需调用一次execute(),但您应该在插入的每一行调用它(如果是insertUPDATE),或者您可以批处理插入,然后调用executeBatch())。

试着这样做:

for (ArrayList<String> ar1 : l) {
   if(line.size() != 9) {      
     System.out.println("This line only had "+line.size()+" elements - supposed to contain 9");
     for(String item : ar1) {
        //Show for finding the error
        System.out.println("- " + item);
     }
   } else {
      for(int i = 0; i <9; ++i) {
        ps.setString(i+1, ar1.get(i));
      }
      //Mark this line to be added
      ps.addBatch();
   }     
}
int[] result = ps.executeBatch();
 类似资料:
  • 问题内容: 我有以下要存储在数据库中的数组… 我试图搜索谷歌上如何做到这一点,我所能找到的是表明插入数组之前需要对数组进行拆分的信息。它是否正确?抱歉,天真,对于php来说还很陌生。 问题答案: 您不能直接将数组插入 mysql, 因为 mysql 无法 识别php 数据类型。 Mysql 只了解 SQL 。因此,要将数组插入mysql数据库,必须将其转换为sql语句。可以手动或通过库来完成。输出

  • 问题内容: 我有一个字符串: 我想要一个简单的方法将其转换为实际的。 我能从中挖掘出的所有其他问题都与将int字符串转换为数组有关。 我试着做 但是我明白了 手动清理边缘并去除斜线似乎是我做错了什么。 我很好奇是否有一种简单的方法可以将字符串数组作为字符串转换为字符串数组。 即转换为 解决方案 (感谢@Eric D) 问题答案: 将您的“字符串数组”编码为数据,然后将此数据作为JSON解码为Swi

  • 我有这样的想法:使用PHP的将多维数组/非多维数组转换为JSON字符串,并将数据存储到SQL数据库中。 例如,我有一个名为'users'的表。表'users'有3个字段:id、name、data 使用php,我想获取用户John的数据: 现在“data”字段的值/文本如下所示: 我将使用PHP的对“data”字段进行解码,然后使用自制的PHP函数将stdClass对象转换为数组。然后我可以在任何地

  • 假设我有以下数组列表: 并且必须遵守规则: 从数组列表 1 开始,我想形成新的以下数组列表: <李>猫狗 <李>鼠蛇 无论如何都可以这样做。我目前还没有找到任何字符串到字符串转换的内容。

  • 我有一个程序,它接受一个单词和一个文本文件字典,并在字典中搜索与给定单词相等的单词组合(是字母表)。 我最后得到了一个字符串数组的Arraylist,每个数组都是一个包含它所使用的单词的解决方案,Arraylist是所有的解决方案。 它首先按字长(降序)排序,然后对等长字使用字母排序。 我现在对各个数组进行了排序,但我正试图按照某些规则在arraylist中对它们进行排序: 按字数递增 对于包含相

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