Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / запрос к базе / 13 сообщений из 13, страница 1 из 1
04.08.2015, 21:44
    #39022950
mixon21
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос к базе
Добрый день всем.
Ребята подскажите почему при добавлении данных в базу в базе появляются знаки вопроса

Код: java
1.
2.
3.
4.
5.
6.
st.executeUpdate("INSERT INTO anp(dateTable, region, A92, A95, A95p, DT, GAS) VALUES ('2015-08-04','"+listRegion.get(i)+"','"
                                                                                                                +listA92.get(i)+"','"
                                                                                                                +listA95.get(i)+"','"
                                                                                                                +listA95p.get(i)+"','"
                                                                                                                +listDT.get(i)+"','"
                                                                                                                +listGAS.get(i)+"')");




а если я делаю запрос в MySql редакторе то все нормально.


Вопрос как исправить.
...
Рейтинг: 0 / 0
05.08.2015, 06:12
    #39023018
mad_nazgul
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос к базе
mixon21,
Посмотри в какой кодировке БД и таблица.
Если они отличны от UTF-8, то нужно изменить кодировку БД и таблиц.
Ну или при подключении указывать из какой в какую кодировку преобразовывать данные.
...
Рейтинг: 0 / 0
05.08.2015, 08:25
    #39023061
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос к базе
...
Рейтинг: 0 / 0
05.08.2015, 09:24
    #39023079
Музаффар
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос к базе
mixon21,

попробуйте разобраться с кодировкой и попробуйте вот так , может поможет
...
Рейтинг: 0 / 0
06.08.2015, 18:31
    #39024604
mixon21
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос к базе
ребята а можно пример а то не могу разобраться.
Спасибо.
...
Рейтинг: 0 / 0
06.08.2015, 18:53
    #39024613
mixon21
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос к базе
Вот мой код

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
          for(int i=0;i<listFirm.size();i++){
                  
                  prs=myConnection.prepareCall("INSERT INTO anp(dateTable, region, A92, A95, A95p, DT, GAS) VALUES (?,?,?,?,?,?,?)");
                   prs.setString(1, date);
                   prs.setString(2,listRegion.get(i));
                   prs.setString(3,listA92.get(i));
                   prs.setString(4,listA95.get(i));
                   prs.setString(5,listA95p.get(i));
                   prs.setString(6,listDT.get(i));
                   prs.setString(7,listGAS.get(i));
                       System.out.println(date);
                  
                  }
...
Рейтинг: 0 / 0
06.08.2015, 19:00
    #39024617
mixon21
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос к базе
все равно пишет кракозяблы
...
Рейтинг: 0 / 0
06.08.2015, 22:01
    #39024666
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос к базе
Значит, несовпадение кодировок текста в Java-коде и в базе. В Java-коде всегда надо использовать UTF-8 (для культурности). Проверить, не задано ли случайно в настройках проекта Windows-1251. Если да, то исправить.
В MySql кодировка может задаваться в нескольких местах:
- по умолчанию для базы
- по умолчанию для таблицы
- отдельно для каждого текстового поля.

Это показывается в визуальном редакторе или можно узнать SQL командой.
Для таблицы это команда:
SHOW CREATE TABLE имя_таблицы;

Будет показан оператор CREATE TABLE, который можно было бы использовать для создания этой таблицы.
В нём конце после списка всех полей может быть CHARACTER SET=имя_кодировки_по_умолчанию.
Тогда это она, кодировка по умолчанию для таблицы. В текстовых полях могут быть отдельные указания кодировки:

имя_поля TEXT CHARACTER SET имя_кодировки

(текстовые поля могут иметь и другие типы, кроме TEXT).
Если кодировка не указана ни там, ни сям, то используется кодировка по умолчанию базы, которую можно узнать по оператору:

SHOW CREATE SCHEMA имя_базы или что то же самое схемы;
или что тоже самое
SHOW CREATE DATABASE имя_базы;

Обнаружив разницу в кодировках базы и Java-кода, можно или привести их в соответствие, или вставить в Java-код перекодировку строкового значения.
...
Рейтинг: 0 / 0
07.08.2015, 09:12
    #39024765
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос к базе
mixon21все равно пишет кракозяблы
А во время отладки значения переменных нормально видны? Отладкой пользуетесь?
...
Рейтинг: 0 / 0
07.08.2015, 09:24
    #39024771
Partisan M
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос к базе
mixon21listRegion.get(i)


Да, забыл. Поскольку текстовые строки не записаны в исходном коде программы, а получаются подобными функциями, то надо узнать, какая кодировка используется там, где они создаются, или посмотреть глазами кодировку результата. Совет использовать PreparedStatement не имел смысла, т.к. не относится к кодировке.
...
Рейтинг: 0 / 0
07.08.2015, 09:37
    #39024776
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос к базе
Partisan MСовет использовать PreparedStatement не имел смысла
Фига себе заява. Это ты вот это вот на полном серьезе?

Partisan M, т.к. не относится к кодировке.
Ну, да. Относится к быдлокодингу.
...
Рейтинг: 0 / 0
07.08.2015, 10:35
    #39024818
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос к базе
mixon21все равно пишет кракозяблы

mixon21, есть 100 способов сломать кодировку строк символов, и только один способ этого не сделать.
Гадать, где у тебя ошибка контрпродуктивно.
По шагам пройди по всем этапам записи данных в БД, и чтения её оттуда, контролируя результат на каждом шаге,
и найдёшь ошибку.

При этом хорошо бы представлять, как именно должна храниться информация в правильном виде, для этого
в mysql консольке (т.е. не средствами твоей программы) создай похожую запись также с национальными строками,
и проверяй всегда обе записи -- эталонную и твою новую.
...
Рейтинг: 0 / 0
07.08.2015, 12:43
    #39024975
mixon21
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос к базе
Всем спасибо нашел как можно исправить.

Код: java
1.
static final String db_url="jdbc:mysql://localhost:3306/priceoil?useUnicode=true&characterEncoding=utf8";
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / запрос к базе / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]