- PR -

ASP.NETにおけるXSS、SQLインジェクション対策

投稿者投稿内容
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2006-02-10 05:09
 DataSet.Fill は、結構重いです。一行一行行うなら、DbCommand 系でいいでしょう。それより、Oracle9i 以降だと思いますが、だったら MERGE 文で一発です。
コード:
Dim sql As New System.Text.StringBuilder
sql.Append("MERGE INTO TABLE1 DEST USING")
sql.Append(" (SELECT :CODE AS CODE FROM DUAL) SRC")
sql.Append(" ON (DEST.CODE = SRC.CODE)")
sql.Append(" WHEN MUCHED THEN UPDATE SET UPDATE 文の SET 句")
sql.Append(" WHEN NOT MUCHED THEN INSERT (列名, ...) VALUES (値, ...)")
con.ConnectionString = 接続文字列
Try
    cmd = New OracleCommand(sql.ToString(), con)
    cmd.Parameters.Add(":CODE", OracleType.Number, 0).Value = 値
    ... パラメータが必要なだけ
    cmd.ExecuteNonQuery()
Finally
    If Not cmd Is Nothing Then
        cmd.Close()
    End If
End Try


使ったことはないので、文法等はよく確認して使用してください。


 DataSet は IDisposable インターフェイスを実装しています。使用後は Dispose してください。DataAdapter 系もそうです。リファレンスを確認して、IDisposable なものは片っ端から Dispose (または代替メソッド)を呼び出してください。Nothing の代入(参照)は、やっても無意味です。

〆 written by Jitta on 2006/02/09
お獅子
大ベテラン
会議室デビュー日: 2004/09/14
投稿数: 160
投稿日時: 2006-02-10 10:09
引用:

Jittaさんの書き込み (2006-02-10 05:09) より:


情報ありがとうございます。何だか難しそうですが参考にさせていただきます。

Dispose については、今後の課題となってます。タイミングを見て全PGを修正する予定です。

スキルアップ/キャリアアップ(JOB@IT)