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

时间: 2024-09-10 10:50:26

ACCESS的参数化查询的相关文章

asp.net和asp下ACCESS的参数化查询_javascript技巧

今天我就把我用ACCESS参数化查询的一些方法和经验和大家分享 希望对大家有所启发,有写的不对的地方希望高手们多多指教 ASP.NET 用OleDbCommand的new OleDbParameter创建参数货查询 ASP用Command的CreateParameter 方法创建参数化查询 (SQL储存过程查询也是用这个方法建立的) ASP.NET C#语法 OleDbParameter parm = new OleDbParameter(Name, Type, Direction, Size,

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

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

pdo中使用参数化查询sql_php技巧

方法 bindParam() 和 bindValue() 非常相似. 唯一的区别就是前者使用一个PHP变量绑定参数,而后者使用一个值. 所以使用bindParam是第二个参数只能用变量名,而不能用变量值,而bindValue至可以使用具体值. 复制代码 代码如下: $stm = $pdo->prepare("select * from users where user = :user"); $user = "jack"; //正确 $stm->bindP

SQLServer 参数化查询经验分享

什么是参数化查询? 一个简单理解参数化查询的方式是把它看做只是一个T-SQL查询,它接受控制这个查询返回什么的参数.通过使用不同的参数,一个参数化查询返回不同的结果.要获得一个参数化查询,你需要以一种特定的方式来编写你的代码,或它需要满足一组特定的标准. 有两种不同的方式来创建参数化查询.第一个方式是让查询优化器自动地参数化你的查询.另一个方式是通过以一个特定方式来编写你的T-SQL代码,并将它传递给sp_executesql系统存储过程,从而编程一个参数化查询.这篇文章的后面部分将介绍这个方法

在ADO.NET中用参数化查询缩短开发时间

ado 一段时间以来,存储过程一直是企业应用程序开发数据访问的首选方法.存储过程的安全性更高.封装能力更强,并能执行复杂的逻辑,且不会打乱应用程序代码.但是,它也存在一些缺点: • 开发者倾向于在存储过程中加入商业逻辑. • 更改过程时必须改变开发环境. • 查找过程所需的参数比较费时. • 许多时候,存储过程提供的功能超出所需. 嵌入到应用程序代码中的内联SQL代码是数据访问的另一个常见方法.虽然企业在开发过程中很少用到这种方法,但许多小型项目应用这种类型的数据访问方法.应用内联SQL可以实现

ASP.NET 2.0数据教程之四十八:在SqlDataSource中使用参数化查询

返回"ASP.NET 2.0数据教程目录" 导言 在前一节教程中,我们看到了如何使用SqlDataSource控件直接从 数据库中获取数据.通过"配置数据源"向导,我们选择一个特定的 数据库,然后就可以:从一个表或视图中选择一些列:输入一个自定义SQL语句: 使用一个存储过程.不管你是手工输入SQL语句还是在向导页中选择一堆列,反正 最终都是给SqlDataSource控件的SelectCommand属性赋上一个SELECT语句,在 SqlDataSource的Se

SQL SERVER参数化查询后不走筛选索引

DROP TABLE T_TEST CREATE TABLE T_TEST( ID INT IDENTITY PRIMARY KEY,STATUS BIT ) INSERT INTO T_TEST SELECT 0 GO 100000 INSERT INTO T_TEST SELECT 1 CREATE INDEX IXF_T_TEST_STATUS ON T_TEST(STATUS) WHERE STATUS=1 UPDATE STATISTICS T_TEST with fullscan D

SQL Server参数化查询大数据下的实践

身为一名小小的程序员,在日常开发中不可以避免的要和where in和like打交道,在大多数情况下我们传的参数不多简单做下单引号.敏感字符转义之后就直接拼进了SQL,执行查询,搞定.若有一天你不可避免的需要提高SQL的查询性能,需要一次性where in 几百.上千.甚至上万条数据时,参数化查询将是必然进行的选择.然而如何实现where in和like的参数化查询,是个让不少人头疼的问题. where in 的参数化查询实现 首先说一下我们常用的办法,直接拼SQL实现,一般情况下都能满足需要.

ado-VC++操作Access数据库的查询语句出错,求助

问题描述 VC++操作Access数据库的查询语句出错,求助 刚学着用VC++操作Acess2003数据库,在对话框里添加一个列表控件,然后把存到数据库里的内容在列表控件中显示,用编辑框向数据库添加内容,基本是照着书上写的做,除了名字改了其它程序都没动.现在向数据库添加内容没有问题,可以正常的存进去.但是想用查询语句SELECT * FROM CKdataInfo把数据库里的内容显示出来就出错了,具体程序如下 void Cdb003Dlg::FreshList() { try { //查询数据库