VB+Oracleのクラサバのプロジェクトのところに派遣された。
↓これみたいに、SQLを実行する前後を BeginTransaction〜commit/rollback で挟んでいるのだけど、
transaction = connection.BeginTransaction(・・・) command.CommandText = "INSERT INTO ・・・" command.ExecuteNonQuery() transaction.Commit()
↓のように、commandとtransactionを関連付けないと、トランザクション関係なく実行されちゃうよな。
transaction = connection.BeginTransaction(・・・) command.Transaction = transaction command.CommandText = "INSERT INTO ・・・" command.ExecuteNonQuery() transaction.Commit()
プロジェクトでトランザクションを使っているところを全部確認したけど、一箇所もcommandとtransactionを関連付けてるところがなかったわ。
まあ何年もまえからやってるプロジェクトで問題になってないんだから、俺が指摘して問題にすることもないかな。
あと、Oracleに接続するユーザーとパスワードが.iniに保存されていて、それもいいのかよって感じだったわ。
アプリ自体にはログイン機能とか権限によってデータのアクセス制限があるのに、アプリ経由しないで直接Oracleに接続したら全部の情報見放題になるわ。
開発現場は、派遣のPCはネットに接続させないとか生データは見せないとか情報漏洩に神経を使ってるに、実際に運用されるであろう現場ではゆるゆるっていう。
なんか懐かしい 10年前にやってたやつだ かつての半導体工場はレタス工場になったようだ