Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.09.2008, 18:34   #1
kiber0net0
Пользователь
 
Регистрация: 12.08.2008
Сообщений: 18
По умолчанию Как предать в MySQL русские буквы

Промучался часа 2, а потом оказалось что Delphi не передает русские шрифты в MySQL, или просто я не знаю как.

Помогите пожалуста если это возможно. Приложение в Delphi7.0 связано через компонент ADO, с помошью драйвера ODBC с MySQL5.
kiber0net0 вне форума Ответить с цитированием
Старый 05.09.2008, 17:35   #2
_SERGEYX_
Участник клуба
 
Аватар для _SERGEYX_
 
Регистрация: 07.07.2007
Сообщений: 1,518
По умолчанию

Через ADO с MySQL я не работал, работал с ZEOS, MyDac, SQLDirect и т.п. Там устанавливалась кодировка. Поищи в свойствах драйвера, где-то она есть. Поставь cp1251.
_SERGEYX_ вне форума Ответить с цитированием
Старый 05.09.2008, 19:57   #3
Teksa
Пользователь
 
Регистрация: 24.08.2007
Сообщений: 88
По умолчанию

хмм, не очень понял вопрос, но может это тебе поможет.

Код:
adoquery2.SQL.Clear;
  adoquery2.SQL.Add('set names cp1251;');
    adoquery2.execsql;
Teksa вне форума Ответить с цитированием
Старый 05.09.2008, 20:14   #4
kiber0net0
Пользователь
 
Регистрация: 12.08.2008
Сообщений: 18
По умолчанию

Я решил эту проблему с помощью такого кода

...
with DMConn.QuerySQL do
Begin
sql.text:='insert into tableO values (:PVal, 1, :Mval)';
Parameters.ParamByName('PVal').valu e:='человек';
Parameters.ParamByName('MVal').valu e:='землянин';
ExecSQL;
end;
...


но хотелось бы настроить драйвер так что бы можно было чуть проще

...
with DMConn.QuerySQL do
Begin
sql.text:='insert into tableO values ('человек', 1, 'землянин');
ExecSQL;
end;
...



а как такое зделать не знаю. Настройки драйвера так и не нашел, не считая настроек которые открываются при нажатии кнопки "Details>>" в окне подключения БД которое вызывается через:
"Администрирование -> Источники данных (ODBC) -> закладка "Пользовательский DNC" -> Кнопка "Добавить..." -> MySQL ODBC 5.1 Driver -> Кнопка "Готово" -> Кнопка "Details>>"

но настроек кодировок, так и не нашел (может плохо искал ).
Может кто нашел, подскажите пожалуйста.
kiber0net0 вне форума Ответить с цитированием
Старый 05.09.2008, 20:26   #5
kiber0net0
Пользователь
 
Регистрация: 12.08.2008
Сообщений: 18
По умолчанию

Цитата:
Сообщение от Teksa Посмотреть сообщение
хмм, не очень понял вопрос, но может это тебе поможет.

Код:
adoquery2.SQL.Clear;
  adoquery2.SQL.Add('set names cp1251;');
    adoquery2.execsql;
'set names cp1251;' - names в этой строке означает какое-то определенное поле, или это зарезервированное слово?

Кстати не помогло, выдает ошибку, после отправки SQL-запросо с содержанием кирилицы, типа:
[MySQL][ODBC 5.1 Driver][mysqld-5.0.67-community-nt]Incorrect string value: '\xD0\xA5\xD1\x80\xD0\xB5...' for column 'MKID' at row 1.

При отправке SQL - запроса insert into StringO(MKID) values('валор');

если поменять валор на слово без кирилицы, valor например, то все работает нормально.

это используемый код:

with DMConn.QuerySQL do
begin
...
with sql do
Begin
Close;
Clear;
text:='insert into StringO(MKID) values('+Chr(39)+'валор'+Chr(39)+') ;';
Open;
End;
...
End;




кстати, а как вернуть настрой по умолчанию, потому что теперь после команды set names cp1251; я уже не могу отправить запрос и с командной строки, что раньше было возможно.

Последний раз редактировалось kiber0net0; 05.09.2008 в 21:20. Причина: Уточнение ошибки
kiber0net0 вне форума Ответить с цитированием
Старый 05.09.2008, 21:25   #6
Teksa
Пользователь
 
Регистрация: 24.08.2007
Сообщений: 88
По умолчанию

гм) мне ж помогло) правда я юзаю стандартный одбц конектор мускулевский, без адо.

Цитата:
There are two statements that affect the connection character sets:

SET NAMES 'charset_name'
SET CHARACTER SET charset_name

SET NAMES indicates what character set the client will use to send SQL statements to the server. Thus, SET NAMES 'cp1251' tells the server “future incoming messages from this client are in character set cp1251.” It also specifies the character set that the server should use for sending results back to the client. (For example, it indicates what character set to use for column values if you use a SELECT statement.)

A SET NAMES 'x' statement is equivalent to these three statements:

SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;
источник http://dev.mysql.com/doc/refman/5.0/...onnection.html

Последний раз редактировалось Teksa; 05.09.2008 в 21:29.
Teksa вне форума Ответить с цитированием
Старый 05.09.2008, 22:07   #7
Teksa
Пользователь
 
Регистрация: 24.08.2007
Сообщений: 88
По умолчанию

сори последнего незаметил, например просто мускуль перезапустить.
Да , кстати, скинь настройки adoconnection
Teksa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Русские буквы в TurboPascal DartMrakkk Паскаль, Turbo Pascal, PascalABC.NET 4 10.03.2009 21:51
MySQL нужна библ. для Visual C++ (MySql++) Alexoid Visual C++ 8 07.05.2008 18:29
DEV C++ не читает русские буквы gumar Общие вопросы C/C++ 1 21.04.2008 09:53
Из файла не читаются русские буквы. snaem Общие вопросы .NET 3 31.03.2008 23:05
Как преобразовать русские буквы в латиницу? Alexander_Gr Microsoft Office Excel 8 03.12.2007 19:49