我正在从文件读取,其中每行具有3-4个值,这些值由制表符分隔。我一直试图将行拆分(基于选项卡)并将其存储在自己的String
中,然后将这些值压入一个方法中,该方法使SQL statement
到INSERT 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();
}
}
我知道这很混乱,这只是到目前为止我所知道的。file
TestURLs
当前有两行用于测试(它们是使用文件中的选项卡拆分的,我只是不知道如何在此处显示):
1 google com
2起司com
我是否缺少导致上述exception
的内容?我以为,当我split
line
会将每个单独的单词放在数组wordsArray
的不同索引中时。相反,似乎索引0中只有一个元素。
[如果有更好的方法来做我想做的事情-也就是说,从文件中提取一行,拆分值,然后将它们作为新记录放入表中,您可以在右边指出我吗?方向?
非常感谢您的帮助。
尝试使用
String[] SQLValues = line.split("\\s+");
您可以使用贪婪的正则表达式,该表达式将匹配任意数量的空格,包括制表符。您可以为此使用“ \ s +”正则表达式。