Я читаю из файла, где каждая строка имеет 3-4 значения, которые разделены вкладкой. Я пытался разбить строку (на основе вкладок) и сохранить их в свои String
, а затем я sh эти значения в метод, который делает значения 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 cheese com
Что-то мне не хватает, что вызывает exception
, упомянутый выше? Я думал, что когда я split
line
, он поместит каждое отдельное слово в другой индекс массива wordsArray
. Вместо этого кажется, что в индексе есть только один элемент.
Если есть лучший способ сделать то, что я пытаюсь сделать, то есть извлечь строку из файла, разделить значения и положить их в таблицу в качестве новой записи - не могли бы вы указать мне правильное направление?
Любая помощь очень ценится.