したらばTOP ■掲示板に戻る■ 全部 1-100 最新50 | |

VBでつくられた2chブラウザ

1851 </b><font color=#FF0000>(GQrDul2E)</font><b>:2005/03/10(木) 10:35:47 ID:Y.qpgkLw
SQL Server,MSDEの場合はImports System.Data.SqlClient
Accessの場合はImports System.Data.OleDb
を使うが、同じマイクロソフトの製品なのに仕様がかなり違う。
Accessでは@名前付きパラメータが使用できず、?ブレースホルダを使う。
?を1コ使っている例は見つかるが、2コ以上の?を使っている例は検索しても解説ページが見つからなかったので自分で作ってみた。
2コ以上の?を使っている例は現時点ではこの解説が唯一だと自負している。
ブレースホルダ付きSQLステートメントは値をセットする順序が大事で、パラメータ名には支配されない。
SQL文に?が出てきた順にcmd.Parameters.Addで値をセットする。
OLE DBの場合は
SQL="Select _ from TABLE Where Field=" & 変数
としてブレースホルダを使わない方が良いような気もするが、
cmd.Parameters.Addはユーザに入力して欲しくない特殊文字を自動的にエスケープしてくれるのでセキュリティ的には有利だ。
とはいえ、各言語やSQLの予約語・特殊文字はそう多くは無いので自前でエスケープしてOLE DB SQL文には従来の変数代入方式でもよい。
------------------------------------
Dim conn As New OleDbConnection(接続文字列)
Dim SQL As String
SQL = "Update Categories2 Set CategoryName=?,Description=? where CategoryID=?"
Dim cmd As New OleDbCommand(SQL, conn)
cmd.Parameters.Add("CategoryName", 値)'←SQL内の?の順にパラメータをパラメータコレクションに追加
cmd.Parameters.Add("Descriotion", 値)'←
cmd.Parameters.Add("CategoryID", 値)'←
conn.Open()
Dim num As Integer = cmd.ExecuteNonQuery
conn.Close()


新着レスの表示


名前: E-mail(省略可)

※書き込む際の注意事項はこちら

※画像アップローダーはこちら

(画像を表示できるのは「画像リンクのサムネイル表示」がオンの掲示板に限ります)

掲示板管理者へ連絡 無料レンタル掲示板