ACCESS的参数化查询
2014-10-22来源:

最近因项目需要用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

更多信息请查看IT技术专栏

推荐信息
Baidu
map