現在以下のようにデータベースにデータを保存し、その後に画像をサーバに保存しようとしているのですが、画像をサーバに保存する段階で失敗した時にデータベースへの書き込みをなかったことにする、つまりトランザクションのような処理を行いたいのですが、そのような方法はあるでしょうか?
以下のやり方だと、画像の保存が失敗した段階でデータベースに保存したレコードを削除しているので、次にもう一度データベースにデータを書き込んだ時にIDが歯抜けになってしまいます。(IDはAutoIncrementに設定している)
どうすればトランザクションのような処理を行えるでしょうか?
c#
1 int insertedId; 2 DBManager dbManager = new DBManager("MySQL ODBC 5.1 Driver", "CENTER"); 3 4 try 5 { 6 insertedId = dbManager.WriteGuestBookDataToMysql(recordManager.targetRecord); 7 } 8 catch (Exception e) 9 { 10 UIUtil.ShowWarningMessageBox(e.Message); 11 12 return; 13 } 14 15 try 16 { 17 FTPManager ftpManager = new FTPManager(); 18 await ftpManager.FileUploadAsync(makeCaptureBitmap(), insertedId); 19 } 20 catch (Exception e) 21 { 22 UIUtil.ShowWarningMessageBox(e.Message); 23 24 try 25 { 26 dbManager.DeleteGuestBookData(insertedId); 27 } 28 catch (Exception dbe) 29 { 30 UIUtil.ShowWarningMessageBox(dbe.Message); 31 } 32 33 return; 34 }
回答5件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/27 05:09