• 爱情文章
  • 亲情文章
  • 友情文章
  • 生活随笔
  • 校园文章
  • 经典文章
  • 人生哲理
  • 励志文章
  • 搞笑文章
  • 心情日记
  • 英语文章
  • 范文大全
  • 作文大全
  • 新闻阅读
  • 当前位置: 山茶花美文网 > 生活随笔 > 正文

    sql参数化查询 ACCESS的参数化查询

    时间:2020-05-28来源:山茶花美文网 本文已影响 山茶花美文网手机站

    最近因项目需要用ACCESS做数据库开发WEB项目看论坛上还许多人问及ACCESS被注入的安全问题许多人解决的方法仍然是用Replace替换特殊字符,然而这样做也并没有起到太大做用.今天我就把我用ACCESS参数化查询的一些方法和经验和大家分享,希望对大家有所启发,有写的不对的地方希望高手们多多指教

    用OleDbCommand的new OleDbParameter创建参数货查询

    ASP用Command的CreateParameter 方法创建参数化查询

    (SQL储存过程查询也是用这个方法建立的)

    C#语法:

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

    (实际上它有七重载大家具体大家可以在里面就可以看到)

    参数

    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("mand")

    mycmd.ActiveConnection=conn

    mandText=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

    • sql参数化查询 ACCESS的参数化查询 相关文章:
    • 爱情文章
    • 亲情文章
    • 友情文章
    • 随笔
    • 哲理
    • 励志
    • 范文大全