ACCESSのパラメータ付きクエリ、VBSCRIPT(ASP)およびC#(ASP.NET)関数付き
2022-01-16 04:32:55
最近、あるプロジェクトのWEB開発で、ACCESSをデータベースとして使用する必要がありました
/{br フォーラムで、注入されたACCESSのセキュリティについて質問されているのを多く見かけました。
今でも多くの人が、特殊文字をReplaceで置き換えて解決していますが、これもあまり役に立ちません
今日は、ACCESSのパラメタライズドクエリについて、私の方法と経験を紹介します。
皆さんの刺激になればと思いますし、何かあれば専門家の方にもっとご指導いただければと思います。
/お役に立てれば幸いです。
ASP は Command の CreateParameter メソッドでパラメトリッククエリを作成します。
(SQLストアドプロシージャのクエリもこのメソッドで作成されます)
ASP.NET C#の構文
----------------------------------------------------------------------------
OleDbParameter parm = new OleDbParameter(Name, Type, Direction, Size, Value);
(実際には7つのオーバーロードがあり、VS.netで見ることができます)
パラメータ
Name オプションで、Parameter オブジェクトの名前を表す文字列を指定します。
Type オプション、Parameter オブジェクトのデータ型を指定する長整数値。
Direction パラメータオブジェクトの型を指定する長整数値。 {
Size オプションで、パラメータ値の最大長(文字数またはバイト数)を指定する長い整数値です。
Value オプション、バリアント型、Parameter オブジェクトの値を指定します。
以下は、tsing が発行したすべてのニュースを news テーブルに問い合わせる例である。
-------------------------------------------------------
sql="select * from newss where username=? order by id"
//クエリ条件はすべて ?記号で示されていることに注意してください。
OleDbConnection conn = new OleDbConnection(connString);
OleDbCommand cmd = new OleDbCommand(sql,conn);
OleDbParameter parm = new OleDbParameter("temp",OleDbType.VarChar, 50)を指定します。
//tempは任意に定義可能なParameterオブジェクト、OleDbType. {VarCharは文字列、長さ50で指定。 /Parmです。 parm.Direction = ParameterDirection.Input とする。
//入力パラメータの種類を指定する
cmd.Parameters.Add(parm)を実行します。
cmd.Parameters["temp"].Value = "tsing";
//cmd.Parameters[0]と記述することもできます。
conn.Open()を実行します。
cmd.ExecuteReader()を実行します。
{
----------------------------------------------------------------------------
ASP VBSCRIPTの構文
----------------------------------------------------------------------------
/Set parameter = command. Set parameter = command.CreateParameter (Name, Type, Direction, Size, Value)
Parameters as above {
Here is the example, querying the news table for all the news published by tsing
------------------------------------------------------
et conn = Server.CreateObject("Adodb.Connection")
conn.ConnectionString = connString
conn.open()
set mycmd = Server.CreateObject("ADODB.)
mycmd.ActiveConnection=conn
mycmd.CommandText=sql
mycmd.Prepared = true
set mypar = mycmd.CreateParameter("temp",129,1,50, "tsing")
mycmd.Parameters.Append mypar
set myrs = mycmd.Execute
---------------------------------------------------------------------------
上記と基本的に異なるのは、aspはパラメータの表現が異なることです
adCharの129は、1が入力パラメータの表示です(実際にはデフォルト値です)。
MICROSOFTのADOVBを参照することができます。
/{br '---- ParameterDirectionEnum Values ----
Const adParamUnknown = 0
Const adParamInput = 1
Const adParamOutput = 2
Const adParamInputOutput = 3
Const adParamReturnValue = 4
'---- DataTypeEnum Values ----
Const adEmpty = 0
Const adTinyInt = 16
Const adSmallInt = 2
Const adInteger = 3
Const adBigInt = 20
Const adUnsignedTinyInt = 17
Const adUnsignedSmallInt = 18
Const adUnsignedInt = 19
Const adUnsignedBigInt = 21
Const adSingle = 4
Const adDouble = 5
Const adCurrency = 6
Const adDecimal = 14
Const adNumeric = 131
Const adBoolean = 11
Const adError = 10
Const adUserDefined = 132
Const adVariant = 12
Const adIDispatch = 9
Const adIUnknown = 13
Const adGUID = 72
Const adDate = 7
Const adDBDate = 133
Const adDBTime = 134
Const adDBTimeStamp = 135
Const adBSTR = 8
Const adChar = 129
Const adVarChar = 200
Const adLongVarChar = 201
Const adWChar = 130
Const adVarWChar = 202
Const adLongVarWChar = 203
Const adBinary = 128
Const adVarBinary = 204
Const adLongVarBinary = 205
/{br フォーラムで、注入されたACCESSのセキュリティについて質問されているのを多く見かけました。
今でも多くの人が、特殊文字をReplaceで置き換えて解決していますが、これもあまり役に立ちません
今日は、ACCESSのパラメタライズドクエリについて、私の方法と経験を紹介します。
皆さんの刺激になればと思いますし、何かあれば専門家の方にもっとご指導いただければと思います。
/お役に立てれば幸いです。
ASP は Command の CreateParameter メソッドでパラメトリッククエリを作成します。
(SQLストアドプロシージャのクエリもこのメソッドで作成されます)
ASP.NET C#の構文
----------------------------------------------------------------------------
コピーコード
コードは以下の通りです。
(実際には7つのオーバーロードがあり、VS.netで見ることができます)
パラメータ
Name オプションで、Parameter オブジェクトの名前を表す文字列を指定します。
Type オプション、Parameter オブジェクトのデータ型を指定する長整数値。
Direction パラメータオブジェクトの型を指定する長整数値。 {
Size オプションで、パラメータ値の最大長(文字数またはバイト数)を指定する長い整数値です。
Value オプション、バリアント型、Parameter オブジェクトの値を指定します。
以下は、tsing が発行したすべてのニュースを news テーブルに問い合わせる例である。
-------------------------------------------------------
sql="select * from newss where username=? order by id"
//クエリ条件はすべて ?記号で示されていることに注意してください。
OleDbConnection conn = new OleDbConnection(connString);
OleDbCommand cmd = new OleDbCommand(sql,conn);
OleDbParameter parm = new OleDbParameter("temp",OleDbType.VarChar, 50)を指定します。
//tempは任意に定義可能なParameterオブジェクト、OleDbType. {VarCharは文字列、長さ50で指定。 /Parmです。 parm.Direction = ParameterDirection.Input とする。
//入力パラメータの種類を指定する
cmd.Parameters.Add(parm)を実行します。
cmd.Parameters["temp"].Value = "tsing";
//cmd.Parameters[0]と記述することもできます。
conn.Open()を実行します。
cmd.ExecuteReader()を実行します。
{
----------------------------------------------------------------------------
ASP VBSCRIPTの構文
----------------------------------------------------------------------------
コピーコード
コードは以下の通りです。
/Set parameter = command. Set parameter = command.CreateParameter (Name, Type, Direction, Size, Value)
Parameters as above {
Here is the example, querying the news table for all the news published by tsing
------------------------------------------------------
et conn = Server.CreateObject("Adodb.Connection")
conn.ConnectionString = connString
conn.open()
set mycmd = Server.CreateObject("ADODB.)
mycmd.ActiveConnection=conn
mycmd.CommandText=sql
mycmd.Prepared = true
set mypar = mycmd.CreateParameter("temp",129,1,50, "tsing")
mycmd.Parameters.Append mypar
set myrs = mycmd.Execute
---------------------------------------------------------------------------
上記と基本的に異なるのは、aspはパラメータの表現が異なることです
adCharの129は、1が入力パラメータの表示です(実際にはデフォルト値です)。
MICROSOFTのADOVBを参照することができます。
コピーコード
コードは以下の通りです。
/{br '---- ParameterDirectionEnum Values ----
Const adParamUnknown = 0
Const adParamInput = 1
Const adParamOutput = 2
Const adParamInputOutput = 3
Const adParamReturnValue = 4
'---- DataTypeEnum Values ----
Const adEmpty = 0
Const adTinyInt = 16
Const adSmallInt = 2
Const adInteger = 3
Const adBigInt = 20
Const adUnsignedTinyInt = 17
Const adUnsignedSmallInt = 18
Const adUnsignedInt = 19
Const adUnsignedBigInt = 21
Const adSingle = 4
Const adDouble = 5
Const adCurrency = 6
Const adDecimal = 14
Const adNumeric = 131
Const adBoolean = 11
Const adError = 10
Const adUserDefined = 132
Const adVariant = 12
Const adIDispatch = 9
Const adIUnknown = 13
Const adGUID = 72
Const adDate = 7
Const adDBDate = 133
Const adDBTime = 134
Const adDBTimeStamp = 135
Const adBSTR = 8
Const adChar = 129
Const adVarChar = 200
Const adLongVarChar = 201
Const adWChar = 130
Const adVarWChar = 202
Const adLongVarWChar = 203
Const adBinary = 128
Const adVarBinary = 204
Const adLongVarBinary = 205
関連
-
アクセスでMSysObjectsのシステムテーブルを設定する方法
-
どのように実装方法を並べ替えるために1からアクセス自動番号を作成する
-
アクセス利用概要
-
Accessのデータ接続時にC#が常にdbo.mdbが見つからないと報告する問題
-
Access to Sql Server の問題例
-
IPに基づきユーザーの都市にジャンプする手順
-
中型Accessデータベースの長期使用によるちょっとした経験とデメリット
-
中国語Access2000クイックチュートリアル - 1.7 インデックスを作成する
-
Accessデータベースの定期メンテナンス方法(最適化)
-
Accessで指定日以前のレコードを選択する方法は?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
GridviewのButtonFieldのtextプロパティを取得する
-
ACCESSデータベースファイルの圧縮と修復方法[グラフィック]。
-
ADODB接続からアクセスは80004005エラー解決法
-
Accessに「検索キーワードに該当するレコードがすべて見つかりません」というエラーが表示される 解決方法
-
データソースへのアクセス(ODBC)設定(新規に知る必要があります。)
-
Accessデータベースは、メソッドを解決するための難しさの開始以来
-
バックグラウンドのストアドプロシージャを呼び出すACCESSの実装方法
-
INNER JOIN構文で複数のテーブルを結合してレコードセットを作成する
-
Access データベースで、OleDbException (0x80004005) が発生しました。操作は更新可能なクエリを使用しなければなりません
-
予約語・変数名リストへのアクセス