На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! Следующие правила действуют в данном разделе в дополнение к общим Правилам Форума
1. Здесь обсуждается Java, а не JavaScript! Огромная просьба, по вопросам, связанным с JavaScript, SSI и им подобным обращаться в раздел WWW Masters или, на крайний случай, в Многошум.
2. В случае, если у вас возникают сомнения, в каком разделе следует задать свой вопрос, помещайте его в корневую ветку форума Java. В случае необходимости, он будет перемещен модераторами (с сохранением ссылки в корневом разделе).

3. Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы. Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
4. Не рекомендуется создавать несколько несвязанных вопросов в одной теме. Пожалуйста, создавайте по одной теме на вопрос.
Модераторы: dark_barker, wind
  
> Как правильно заносить строковые значения содержащие апостроф в бд mySQL? , я получаю в базе вместо апострофа - \u0027
    Здравствуйте.
    Когда я выполняю SQL-запрос в своем коде на java, через driverManager, то получаю в базе вместо апострофа - \u0027.

    user posted image

    ExpandedWrap disabled
      public class ParserFilms {
       
          ResultSet resultSet;
          void listFilms(){
       
              File filmsFolder = new File("/home/alex/Development/films");
              File[] films = filmsFolder.listFiles();
              Properties connInfo = new Properties();
              connInfo.put("user", "root");
              connInfo.put("password", "****");
              connInfo.put("useUnicode","true"); // (1)
              connInfo.put("charSet", "UTF8"); // (2)
              try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost/films?", connInfo);
                   PreparedStatement statement = connection.prepareStatement("INSERT INTO films(name_film, rating, description, poster, path, year_of_release) VALUE (?, ?, ?, ?, ?, ?)")) {
       
                  for (File film:films) {
       
                      String actors = new String(Files.readAllBytes(Paths.get(film.getPath() + "/actors.txt")));
                      String description = new String(Files.readAllBytes(Paths.get(film.getPath() + "/description.txt")));
                      String genres = new String(Files.readAllBytes(Paths.get(film.getPath() + "/genres.txt")));
                      String names = new String(Files.readAllBytes(Paths.get(film.getPath() + "/names.txt")));
                      String Producer = new String(Files.readAllBytes(Paths.get(film.getPath() + "/Producer.txt")));
                      String year = new String(Files.readAllBytes(Paths.get(film.getPath() + "/year.txt")));
       
                      String[] namesArray = names.split(" / ");
                      for (int i = 0; i<namesArray.length; i++) {
                          namesArray[i] = namesArray[i].trim();
                      }
       
       
       
                      statement.setString(1, new Gson().toJson(namesArray));
                      statement.setInt(2,5);
                      statement.setString(3, description);
                      statement.setString(4,film.getPath() + "/poster.jpg");
                      statement.setString(5, film.getPath() + "filmName");
                      statement.setInt(6,Integer.parseInt(year.trim()));
                      statement.executeUpdate();
       
                  }//for
              }catch (SQLException | IOException e){
                  e.printStackTrace();
              }
          }
      }


    Когда я выполняю похожей запрос через Workbench, то все в порядке:
    user posted image

    ExpandedWrap disabled
      INSERT INTO films(name_film, rating, description, poster, path, year_of_release) VALUE ("world's dog", 5, "Привет мир", "Пока мир", "world's dog", 2017);
      Забыл указать что поле names, имеет тип данных json. И как я узнал, для этого типа данных это нормально.
        Цитата Astrgan @
        я выполняю SQL-запрос в своем коде на java

        При таком подходе, вы сами обязаны взять на себя проблему экранирования кавычек, и защиту от инъекций. Либо используйте bind параметры с готовыми библиотеками для работы с SQL скриптами, либо самостоятельно проверяйте содержимое значений ваших параметров на предмет наличия кавычек или инъекций.
          Цитата Astrgan @
          в своем коде на java

          Цитата Astrgan @
          PreparedStatement statement

          На дворе 2018, работать с сырым jdbc уже не надо, пользуйтесь jdbcTemplate что ли.
            Цитата Astrgan @
            Когда я выполняю SQL-запрос в своем коде на java, через driverManager, то получаю в базе вместо апострофа - \u0027.

            Видимо, потому что в БД кодировка не Unicode.
            0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
            0 пользователей:


            Рейтинг@Mail.ru
            [ Script execution time: 0,0292 ]   [ 16 queries used ]   [ Generated: 28.03.24, 17:24 GMT ]