1. ホーム
  2. データベース
  3. アクセス

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 

1 2 次ページ もっと読む