Два вопроса по БД (mysql)

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Два вопроса по БД (mysql)

Сообщение st-pascal » 31.05.2010 17:54:28

1. БД кодировка utf8, при получении данных и вывод в StringGrid кодировка портится, вместо русских букв вопросы.
2. БД, поле текст, вставляю туда текст в виде пути к файлу (\\PC\temp\file.doc), после вставки происходит странное, в поле в БД такие данные: в начале один слеш остается а все остальные удаляются. вставляю в базу так
Код: Выделить всё
INSERT INTO test (file) VALUES ('+#39+Edit1.Text+#39+' );


Где я ошибся?
st-pascal
незнакомец
 
Сообщения: 4
Зарегистрирован: 31.05.2010 17:25:07

Re: Два вопроса по БД (mysql)

Сообщение Basileus » 01.06.2010 16:12:00

На первый вопрос отвечу. Перед выборкой выполните запрос
Код: Выделить всё
SET NAMES utf8
Basileus
новенький
 
Сообщения: 23
Зарегистрирован: 31.03.2010 16:23:22

Re: Два вопроса по БД (mysql)

Сообщение Timid » 01.06.2010 20:21:57

st-pascal писал(а):2. БД, поле текст, вставляю туда текст в виде пути к файлу (\\PC\temp\file.doc), после вставки происходит странное, в поле в БД такие данные: в начале один слеш остается а все остальные удаляются. вставляю в базу так
Код: Выделить всё
INSERT INTO test (file) VALUES ('+#39+Edit1.Text+#39+' );


Где я ошибся?


Вероятнее всего где-то происходит распарсивание текста - он берется в двойные кавычки. Сразу срабатывает юниксово-цешный принцип вставки специальных символов \код. Поскольку Ваш текст не содержит таких специальных кодов кроме самого слеша, то вы получаете одну правильную замену - двойной слеш как одинарный и игнорирование остальных.
Такая подстановка выполняется именно в одинарных кавычках: \\ на \, \' на ', в остальных случаях \литера на литера.

Забыл добавить: попробуйте использовать прямой слеш - паскаль его корректно обрабатывает в имени файла.
Timid
постоялец
 
Сообщения: 290
Зарегистрирован: 21.11.2007 21:33:15

Re: Два вопроса по БД (mysql)

Сообщение st-pascal » 02.06.2010 21:25:31

Basileus, да спасибо помогло. По искал тут на форуме такой вопрос, проблема популярная :D

2. нужно использовать SQLQuery1.Params.ParamByName('file').Value
st-pascal
незнакомец
 
Сообщения: 4
Зарегистрирован: 31.05.2010 17:25:07


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Yandex [Bot] и гости: 248

Рейтинг@Mail.ru