Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.84] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте.
Когда я выполняю SQL-запрос в своем коде на java, через driverManager, то получаю в базе вместо апострофа - \u0027. 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, то все в порядке: INSERT INTO films(name_film, rating, description, poster, path, year_of_release) VALUE ("world's dog", 5, "Привет мир", "Пока мир", "world's dog", 2017); |
Сообщ.
#2
,
|
|
|
Забыл указать что поле names, имеет тип данных json. И как я узнал, для этого типа данных это нормально.
|
Сообщ.
#3
,
|
|
|
Цитата Astrgan @ я выполняю SQL-запрос в своем коде на java При таком подходе, вы сами обязаны взять на себя проблему экранирования кавычек, и защиту от инъекций. Либо используйте bind параметры с готовыми библиотеками для работы с SQL скриптами, либо самостоятельно проверяйте содержимое значений ваших параметров на предмет наличия кавычек или инъекций. |
Сообщ.
#4
,
|
|
|
Цитата Astrgan @ в своем коде на java Цитата Astrgan @ PreparedStatement statement На дворе 2018, работать с сырым jdbc уже не надо, пользуйтесь jdbcTemplate что ли. |
Сообщ.
#5
,
|
|
|
Цитата Astrgan @ Когда я выполняю SQL-запрос в своем коде на java, через driverManager, то получаю в базе вместо апострофа - \u0027. Видимо, потому что в БД кодировка не Unicode. |