欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

ACCESS的参数化查询,附VBSCRIPT(ASP)和C#(ASP.NET)函数第2/2页

程序员文章站 2022-06-09 18:07:20
ACCESS的参数化查询,附VBSCRIPT(ASP)和C#(ASP.NET)函数第2/2页...
最近因项目需要用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