Я хочу вставить список строк в базу данных, поэтому обычно мы будем хранить строку непосредственно в базе данных, используя подготовленный оператор или пакетный оператор. Теперь я хочу вставить список строк в базу данных, поэтому я использовал подготовленный оператор.
List<String> Account_Number = Files.lines(Paths.get("D:\\PDFTOEXCEL\\Extractionfrompdf.txt"))
.filter(s -> s.contains(arra.get(7)))
.map(s -> s.split(":")[1].trim())
.collect(Collectors.toList());
System.out.println(Account_Number);
try {
Connection conn = PDFTOEXCEL.getConnection();
PreparedStatement stmt = conn.prepareStatement("insert into client_info values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
stmt.setString(1, Account_Number);
int k = stmt.executeUpdate();
У меня есть около 31 столбца в моей базе данных. Просто для демонстрации я разместил только один в этом коде. Все находятся в списке только строки.




Вы пытались установить параметры один за другим? Что-то вроде этого:
int size = Account_Number.size();
for (int i = 1; i <= size; i++) {
stmt.setString(i, Account_Number.get(i-1));
}
Таким образом, каждый знак вопроса в операторе SQL представляет собой параметр, в вашем случае это 30 параметров/столбцов. И stmt.setString(i, Account_Number.get(i-1)); установит значение для параметра/столбца с индексом Y. Итак, здесь я предполагаю, что Account_Number.size() действительно соответствует количеству столбцов в вашей таблице.
k вы можете показать, как поместить это утверждение в мою программу, но я все еще не понимаю, что вы на самом деле говорите, если вы не возражаете
Account_Number - это мой один из столбцов в моей таблице базы данных. Я создал таблицу в Client_info, это имя моей таблицы.
Можете ли вы опубликовать определение таблицы client_info? то есть имя и индекс всех столбцов. Итак, если Account_Number — это первый столбец в вашей таблице, вам нужно установить stmt.setString(1, Account_Number.get(1));, а затем для остальных 30 столбцов stmt.setString(COLUMN_INDEX, "Column Value"); Имейте в виду, что Account_Number — это список строк, возможно, список номеров счетов.
Я получаю сообщение об ошибке, в то время как (query_set.next()) { row_counter = row_counter + 1; Account_Number = query_set.getString("Account_Number"); ошибка: несовместимые типы: строка не может быть преобразована в список <String> /* данные в карту */
Предполагая, что список представляет значения этих 31 столбцов, что мешает вам зациклиться на нем и вызвать
stmt.setString(index, value)? Кроме того, вы должны работать над своим именованием, например.Accout_Numberбудет указывать одно значение, а не список (или, точнее, в мире Java это будет больше похоже на смесь имени класса, потому что оно начинается с буквы в верхнем регистре, и константы из-за подчеркивания).