Вставьте символы Unicode в MySQL с Delphi 2010 - PullRequest
2 голосов
/ 05 октября 2010

Попытка вставить значения с Unicode Chars в MySQL-базу данных с помощью Delphi 2010 и TADOConnection безуспешно.

Соединение с ODBC

Provider=MSDASQL.1;Persist Security Info=False;Data Source=mysrc;Initial Catalog=mydb

Команда SQL:

INSERT INTO myTable (aCol) VALUES('Russian: русский язык')

Попытался вставить его напрямую с помощью

TADOConnection.Execute(SQL)

Он попадает в базу данных только как "Russian: ??????? ????"

Также пробовалметод, предложенный здесь: http://www.3delite.hu/Object%20Pascal%20Developer%20Resources/delphiunicodemysqltutorial.html With TADOQuery do begin SQL.Clear; SQL.Add('INSERT INTO myTable (aCol) VALUES(:p)); Parameters.ParamByName('p').DataType := ftWideString; Parameters.ParamByName('p').Value := 'Russian: русский язык'; ExecSQL; end;

Создание этого в коде не работает для меня вообще, только если я добавляю параметры во время разработки, но тогда это все тот же результат вбаза данных с вопросительными знаками по всему.

Ответы [ 2 ]

2 голосов
/ 06 октября 2010

Кажется, TADOConnection не поддерживает Unicode, по крайней мере, я не могу заставить его работать.

Если я вместо этого использую dbExpress TSQLConnection и TSQLQuery для вставки в базу данных, она работает как задумано. Но я должен сделать это с параметрами, а не с помощью команды INSERT

                with qTarget.Params.ParamByName('p' + IntToStr(i)) do
                begin
                    DataType    := ftWideString;
                    Value           := Fields[i].AsWideString;
                end;
                qTarget.ExecSQL;
0 голосов
/ 05 октября 2010

Я считаю, что этот PHP-скрипт сначала выполняет SET NAMES utf8 запрос

...