如何分割字符串并将每个值作为记录插入数据库中?

问题描述 投票:0回答:1

我正在从文件读取,其中每行具有3-4个值,这些值由制表符分隔。我一直试图将行拆分(基于选项卡)并将其存储在自己的String中,然后将这些值压入一个方法中,该方法使SQL statementINSERT INTO的值成为表新记录。

我的问题是split()方法不适用于我,因为它为第二个值提供了一个'ArrayOutOfBoundsException'。但是我很确定,有一种更简单的方法可以完成我想做的事情。

目前有:

// --------- Reading the topURLs file ---------

        try {
            scan = new Scanner (new File("TestURL"));

            while (scan.hasNextLine()) {
                String line = scan.nextLine();
                String[] SQLValues = line.split("\\t");
                String rank = SQLValues[0];
                String websiteName = SQLValues[1];
                String domain = SQLValues[2];
                insertInto(conn, tableName, rank, websiteName, domain);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }

还有我的insertInto方法,以防您想看到:

public static void insertInto(Connection conn, String name, String rank, String websiteName, String domain) {
        Statement st = null;

        int rankInt = Integer.parseInt(rank);
        try {
            st = conn.createStatement();
            st.execute("INSERT INTO " + name + "VALUES ('" + rankInt + "', '" + websiteName + "', '" + domain + "')");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

我知道这很混乱,这只是到目前为止我所知道的。fileTestURLs当前有两行用于测试(它们是使用文件中的选项卡拆分的,我只是不知道如何在此处显示):

1 google com

2起司com

我是否缺少导致上述exception的内容?我以为,当我split line会将每个单独的单词放在数组wordsArray的不同索引中时。相反,似乎索引0中只有一个元素。

[如果有更好的方法来做我想做的事情-也就是说,从文件中提取一行,拆分值,然后将它们作为新记录放入表中,您可以在右边指出我吗?方向?

非常感谢您的帮助。

sql database file jdbc java.util.scanner
1个回答
0
投票

尝试使用

String[] SQLValues = line.split("\\s+");

您可以使用贪婪的正则表达式,该表达式将匹配任意数量的空格,包括制表符。您可以为此使用“ \ s +”正则表达式。

© www.soinside.com 2019 - 2024. All rights reserved.