ACCESS的参数化查询,附VBSCRIPT(ASP)和C#(ASP.NET)函数第2/2页
程序员文章站
2022-01-13 10:55:34
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
看论坛上还许多人问及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
上一篇: 音频framework杂记1