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


Posted in Javascript onJune 11, 2008

今天我就把我用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发表的新闻
 ------------------------------------------------------ 
 

set 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  

附我写的C#类,和VBSCRIPT函数,希望对大家有帮助
using System;  
using System.Data;  
using System.Configuration;  
using System.Web;  
using System.Data.OleDb;  
namespace acc_select  
{  
 /// <summary>  
 /// accselect 的摘要说明  
 /// </summary>  
 public class accselect  
 {  
 //"Provider=Microsoft.Jet.OLEDB.4.0; Data Source=d:\dq\db1.mdb"  
 private string conn = ConfigurationManager.ConnectionStrings["tsingConnectionString"].ToString();  
 public string sql = string.Empty;  
 public int t = 4;  
 public object v = null;  
 public accselect()  
 {  
 }  
 /// <summary>  
 /// 构造函数,传递ACC参数查询语句  
 /// </summary>  
 /// <param name="strsql">strsql字符型</param>  
 public accselect(string strsql)  
 {  
 sql = strsql;  
 }  
 /// <summary>  
 /// 构造函数,传递ACC参数查询语句  
 /// </summary>  
 /// <param name="strsql">参数查询语句</param>  
 /// <param name="total">字节数</param>  
 public accselect(string strsql, int total)  
 {  
 sql = strsql;  
 t = total;  
 }  
 /// <summary>  
 /// 构造函数  
 /// </summary>  
 /// <param name="strsql">参数查询语句</param>  
 /// <param name="total">字节数</param>  
 /// <param name="value">OBJECT值</param>  
 public accselect(string strsql, int total, object value)  
 {  
 sql = strsql;  
 t = total;  
 v = value;  
 }  
 /// <summary>  
 /// getOdd方法返回OleDbDataReader  
 /// </summary>  
 /// <param name="odt">定义OleDbType类型</param>  
 /// <returns></returns>  
 public OleDbDataReader getOdd(OleDbType odt)  
 {  
 OleDbConnection conns = new OleDbConnection(this.conn);  
 OleDbCommand cmd = new OleDbCommand(this.sql, conns);  
 OleDbParameter parm = new OleDbParameter("temp", odt, this.t);  
 parm.Direction = ParameterDirection.Input;  
 cmd.Parameters.Add(parm);  
 cmd.Parameters[0].Value = this.v;  
 conns.Open();  
 OleDbDataReader oda = cmd.ExecuteReader();  
 cmd.Dispose();  
 return oda;  
 }  
 string Sql  
 {  
 get  
 {  
 return sql;  
 }  
 set  
 {  
 sql = value;  
 }  
 }  
 int T  
 {  
 get  
 {  
 return t;  
 }  
 set  
 {  
 t = value;  
 }  
 }  
 object V  
 {  
 get  
 {  
 return v;  
 }  
 set  
 {  
 v = value;  
 }  
 }  
 }  
}  
//调用方法  
//accselect acc = new accselect();  
//acc.sql = "select * from dtt where d_id=?";  
//acc.t = 10;  
//acc.v = 1;  
//OleDbDataReader oda = acc.getOdd(OleDbType.VarChar);  
//Repeater1.DataSource = oda;  
//Repeater1.DataBind(); 

function acc_sql(sql,adotype,adodct,strlong,values)  
dim connstring,mycmd,myrs,conn   connString="Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("db1.mdb")  
 set 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",adotype,adodct,strlong,values)  
 mycmd.Parameters.Append mypar  
 set myrs = mycmd.Execute  
 set acc_sql=myrs   
end function   
'调用方法  
'dim rs  
'sql="select * from users where id=? order by id"  
'set rs=acc_sql(sql,3,1,4,1)  
'if not rs.eof then  
 'response.Write(rs(1))  
'end if 
Javascript 相关文章推荐
js直接编辑当前cookie的脚本
Sep 14 Javascript
与jquery serializeArray()一起使用的函数,主要来方便提交表单
Jan 31 Javascript
js实现iframe自动自适应高度的方法
Feb 17 Javascript
AngularJS 工作原理详解
Aug 18 Javascript
Javascript typeof与instanceof的区别
Oct 18 Javascript
JavaScript数据结构链表知识详解
Nov 21 Javascript
JS验证码实现代码
Sep 14 Javascript
Js判断H5上下滑动方向及滑动到顶部和底部判断的示例代码
Nov 15 Javascript
微信小程序实现流程进度的图样式功能
Jan 16 Javascript
vue路由跳转传参数的方法
May 06 Javascript
node.js Promise对象的使用方法实例分析
Dec 26 Javascript
JS代码触发事件代码实例
Jan 02 Javascript
json跟xml的对比分析
Jun 10 #Javascript
json 定义
Jun 10 #Javascript
json简单介绍
Jun 10 #Javascript
告诉大家什么是JSON
Jun 10 #Javascript
javascript模仿msgbox提示效果代码
Jun 10 #Javascript
javascript 建设银行登陆键盘
Jun 10 #Javascript
js left,right,mid函数
Jun 10 #Javascript
You might like
php中get_meta_tags()、CURL与user-agent用法分析
2014/12/16 PHP
CI框架整合widget(页面格局)的方法
2016/05/17 PHP
PHP中include/require/include_once/require_once使用心得
2016/08/28 PHP
php发送http请求的常用方法分析
2016/11/08 PHP
Yii2框架中日志的使用方法分析
2017/05/22 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
laravel通用化的CURD的实现
2019/12/13 PHP
JavaScript 空位补零实现代码
2010/02/26 Javascript
jquery中防刷IP流量软件影响统计的一点对策
2011/07/10 Javascript
33个优秀的 jQuery 图片展示插件分享
2012/03/14 Javascript
javascript自动切换焦点控制效果完整实例
2016/02/02 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
angular中使用Socket.io实例代码
2017/06/03 Javascript
Angular搜索 过滤 批量删除 添加 表单验证功能集锦(实例代码)
2017/10/25 Javascript
mpvue跳转页面及注意事项
2018/08/03 Javascript
vue总线机制(bus)知识点详解
2020/05/10 Javascript
常用python编程模板汇总
2016/02/12 Python
Python实现将照片变成卡通图片的方法【基于opencv】
2018/01/17 Python
对pandas读取中文unicode的csv和添加行标题的方法详解
2018/12/12 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
使用python telnetlib批量备份交换机配置的方法
2019/07/25 Python
Python如何定义有默认参数的函数
2020/08/10 Python
pycharm 配置svn的图文教程(手把手教你)
2021/01/15 Python
css3实现椭圆轨迹旋转的示例代码
2018/10/29 HTML / CSS
HTML5 Video标签的属性、方法和事件汇总介绍
2015/04/24 HTML / CSS
将SVG图引入到HTML页面的实现
2019/09/20 HTML / CSS
C语言笔试题
2014/09/04 面试题
物流管理专业大学生自荐信
2013/10/04 职场文书
英文版餐饮业求职信
2013/10/18 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
员工安全承诺书
2014/05/22 职场文书
优秀高中学生评语
2014/12/30 职场文书
大学生入党自传2015
2015/06/26 职场文书
《富饶的西沙群岛》教学反思
2016/02/16 职场文书
2019最新版劳务派遣管理制度
2019/08/16 职场文书
MySQL索引失效场景及解决方案
2022/07/23 MySQL