Разобрать / разбить строку и загрузить ее в базу данных

Я пытаюсь разбить / разобрать строку на несколько частей, а затем правильно загрузить ее в базу данных.

У меня есть такая строка:

String CARDS =
        "e \"Water\"\n" +
        "n \"John\"\n" +
        "p \"Big\"\n" +
        "e \"Fire\"\n";

Я хочу разделить каждую строку и иметь что-то вроде

 e
 "Water"
 n
 "John"

Мне удалось это сделать примерно так:

      String delim = " \n\r\t,.;"; //insert here all delimitators
      StringTokenizer card = new StringTokenizer(CARDS,delim);
      while (card.hasMoreTokens()) {
          System.out.println(card.nextToken());
      }

Я создал небольшую таблицу под названием card, которая содержит card_type и card_desc. Где card_type будет первой буквой, например e, n и т. д., А затем card_desc будет Water, John и т. д.

Еще у меня есть метод вставки:

public void insert() throws SQLException {
    Connection con = ListPlayers.myCon.get();
    String query = "INSERT INTO deck (card_type,card_desc) VALUES (?,?);";
    PreparedStatement ps = con.prepareStatement(query);
    ps.setString(1, card_type);
    ps.setString(2, card_desc);
    ps.executeUpdate();
    ps.close();
}

Я просто не уверен, как успешно разделить разделенную строку на тип карты и описание, а затем загрузить ее в базу данных.

Вам следует избегать вызова close вручную. Вместо этого поместите PreparedStatement в оператор try-with, который гарантирует закрытие в исключительных ситуациях. Вам также может потребоваться закрыть соединение, если вы используете современный пул соединений. docs.oracle.com/javase/tutorial/essential/exceptions/…

Deadron 12.11.2018 20:36
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
58
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы уже сделали самое сложное. Просто замените кавычки (") в своем описании и вызовите свой метод для вставки данных. Обновите цикл while.

while (card.hasMoreTokens()) {
    String card_type = card.nextToken();
    String card_desc = card.nextToken().replace("\"","");
    //you can call your insert method to insert the data
    // example insert(card_type,card_desc)
    System.out.println(card_type+"::"+card_desc);
}

Я добавил отпечаток просто для проверки.

Обновите свой метод вставки, чтобы передать параметры.

Другие вопросы по теме