Q118-1:MySQLでデータをアップデートしたいのですが、「不明なエラーが発生しました」というエラーが表示されて、出来ません。
A118-1:
お送りいただいたアプリケーションでは検索結果を利用した更新を行おうとしていますが、そのためには、メソッド「startUpdate()」後に更新対象となるデータを「Select」する必要があります。
メソッド「SQL文を実行する(String)」を追加して下さい。
Q118-2:
ご指導の中の「メソッド「SQL文を実行する(String)」を追加する」ですが、例えば文はどういったものを入れればよろしいのでしょうか?
A118-2:
Updateをしたいテーブルから必要なデータをSelectしてください。
「select * from sagyo」でも結構ですし、必要な項目の列名だけを指定して「Select 列1, 列2 from sagyo」といった形でも結構です。但し、更新対象となる列は全て取得してくる必要があります。
Q118-3:
ご指導通り行いましたが、またダメみたいです。ご検証宜しくお願い致します。
A118-3:
更新用のデータの列名ははMySQL内のテーブルの項目名と一致する必要があります。[テーブル(ID:116)]には右端に「f1」「f2」名の列があります。これは不要ではないでしょうか?また、その他の列名も一致しているでしょうか。
Q118-4:
データベースと列を同じにしたら、「Exception: Duplicate entry ‘12’ for key 1」というエラーに変わりました。
A118-4:
お知らせ頂いたエラーはMySQL内のテーブルのid列に重複するデータ(今回は「12」)を設定しようとしたことから起こっています。
[テーブル(ID:29)]には現在のところ、データが一行だけ入っていますが、このデータはどこかから取得してきたのでしょうか?あるいは画面から入力されたデータでしょうか。
「UpdateRow(PFObjectTable,int)」の2番目の引数ですが、これは「startUpdate()」後に行われた「select * from sagyo」で取得したテーブルデータと照し合わせて、何行目をUpdateしたいかを指定します。
現在は「select * from sagyo」≠[テーブル(ID:29)]の状態かと思います。
例えば「startUpdate()」後に「select * from sagyo where id=12 」
(「12」の部分は内容に合わせて変更するように、後で処理を作ります)を実行します。
更新対象となるデータはこの時点で一行だけですので、「UpdateRow(PFObjectTable,int)」
の2番目の引数を「固定値、0」としてみてください。
検索結果を利用した更新処理は
@StartUpdate
ASelect文の実行
Updateしたいデータを取得してくる
全部Selectせず、一部だけでも可
BUpdateRow
Aの検索結果に対して更新をするので、何行目を更新するか(引数2)は
Aの検索結果テーブルと照し合わせることになる
CfinishUpdate
という考え方です。