程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> Access數據庫 >> 關於Access數據庫 >> ACCESS的參數化查詢

ACCESS的參數化查詢

編輯:關於Access數據庫

       最近因項目需要用ACCESS做數據庫開發WEB項目看論壇上還許多人問及ACCESS被注入的安全問題許多人解決的方法仍然是用Replace替換特殊字符,然而這樣做也並沒有起到太大做用.今天我就把我用ACCESS參數化查詢的一些方法和經驗和大家分享,希望對大家有所啟發,有寫的不對的地方希望高手們多多指教

      ASP.NET 用OleDbCommand的new OleDbParameter創建參數貨查詢

      ASP用Command的CreateParameter 方法創建參數化查詢

      (SQL儲存過程查詢也是用這個方法建立的)

      ASP.NET C#語法:

      OleDbParameter parm = new OleDbParameter(Name, Type, Direction, Size, Value);

      (實際上它有七重載大家具體大家可以在VS.net裡面就可以看到)

      參數

      Name    可選,字符串,代表 Parameter 對象名稱。

      Type    可選,長整型值,指定 Parameter 對象數據類型。

      Direction  可選,長整型值,指定 Parameter 對象類型。。

      Size    可選,長整型值,指定參數值最大長度(以字符或字節數為單位)。

      Value    可選,變體型,指定 Parameter 對象的值。

      以下是實例,查詢news表中所有tsing發表的新聞

      -------------------------------------------------------

      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.Direction = ParameterDirection.Input;

      //指定其類型輸入參數

      cmd.Parameters.Add(parm);

      cmd.Parameters["temp"].Value = "tsing";

      //查詢tsing,也可以寫成cmd.Parameters[0]

      conn.Open();

      cmd.ExecuteReader();

      ASP VBSCRIPT語法

      Set parameter = command.CreateParameter (Name, Type, Direction, Size, Value)

      參數同上

      以下是實例,查詢news表中所有tsing發表的新聞

      ------------------------------------------------------

      et conn = Server.CreateObject("Adodb.Connection")

      conn.ConnectionString = connString

      conn.open()

      set mycmd = Server.CreateObject("ADODB.Command")

      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在對參數的表達上面不同

      129為adChar,1就是指示輸入參數(是其實是默認值)

      大家請參閱MICROSOFT的ADOVB.Inc:

      ’----  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. 下一頁:
    Copyright © 程式師世界 All Rights Reserved