2

Delphi 2010 と TADOConnection を使用して、Unicode Char の値を MySQL データベースに挿入しようとしていますが、うまくいきません。

ODBCとの接続

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

SQL コマンド:

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

で直接挿入してみました

TADOConnection.Execute(SQL)

データベースでは「ロシア語: ??????? ????」となるだけです。

ここで提案されている方法も試してみました: 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;

これをコードで作成しても、設計時にパラメーターを追加した場合にのみ、まったく機能しませんが、データベース全体で同じ結果になり、疑問符が全体に表示されます。

4

2 に答える 2

2

TADOConnection は Unicode をサポートしていないようです。少なくとも、動作させることはできません。

代わりに dbExpress TSQLConnection と TSQLQuery を使用してデータベースに挿入すると、意図したとおりに機能します。しかし、INSERTコマンドを直接使用するのではなく、パラメーターを使用して行う必要があります

                with qTarget.Params.ParamByName('p' + IntToStr(i)) do
                begin
                    DataType    := ftWideString;
                    Value           := Fields[i].AsWideString;
                end;
                qTarget.ExecSQL;
于 2010-10-06T11:13:00.220 に答える
0

このPHPスクリプトはSET NAMES utf8最初にクエリを実行すると思います

于 2010-10-05T15:16:32.473 に答える