Windows8.1 Update(Pro)
Delphi XE5 Pro
Postgresql
TADOQueryにて文字列をDBに保存(更新)するにあたり、
Query.Parameters.ParamByName('Name').DataType := ftString;
Query.Parameters.ParamByName('Name').Value := Name.Text;
等としてQuery.ExecSQLを実行すると・・・
文字列が短い場合は正常に動作するのですが、長い文字列を保存しようとすると、
「Identifier must be less than 64 characters」と表示されて更新されません。
DataTypeをいろいろ変えてみたり、Sizeを渡してみたりしましたが、
状況は変わらないようです。
どのようにすれば、保存できるでしょうか?
もちろん、Parameters.ParamByNameを使わずに すべて文字として
Query.SQL.TextにSQL分を渡せば問題なく更新できますし
SQL文をある程度簡単に構築するため関数も作っているので
Parameters.ParamByNameを使わなくても実害は無いのですが
Parameters.ParamByNameを使って出来ないはずないですよね?
今までParameters.ParamByNameを使っていなかったので・・・(^^;
気になって質問をしてみました。
ご教示頂けると幸いです。
みなさん こんにちは。
その後、ZeosLibを使って同じことを行ってみました。
その結果、ZeosLibのParamByNameをであれば、問題なく動作することが解りました。
と、いう事は、TADOQueryの問題ということですかね・・・
もしくは、どこか設定する項目が足りないか・・・
ところで、このZeosLibですが、テーブルの名称とか項目名とかに日本語名を使っていると(^^;
SQL.TextにSQL文を放り込むだけで例外エラーになる・・・
まぁ日本語記述してある部分をすべてダブルクォーテーションで括ってあげると
正常動作しますが・・・ その点はADOQueryはそのまま動作するので、ありがたい。
(ダブルクォーテーションで括るのは面倒だ・・・)
そんなわけで、ADOQueryでParamByNameを使わない方向でやっていきます(^^;
一応、解決としますが、何か情報があれば、教えてください。
よろしくお願いいたします。