◆ [2018-7-17 星期二 19:21] ◆ 您来自:54.198.104.202,欢迎您访问風雲工作室。 收藏本站 ◆ | ◆ 设为首页
联系站长(腾讯QQ)
5029111 [風雲]
站长当前离线
首  页 论坛交流 游戏频道 无忧脚本 网络硬盘 网店精选 聊 天 室 自助链接 来访记录 访客留言 搜索提供
位置:風雲工作室 - 论坛交流 - 技术专栏 - 后台开发 - 【原创】2008 R2 x64下使用DbHelper.sct + OleDb + ODBC 返回
主题:【原创】2008 R2 x64下使用DbHelper.sct + OleDb + ODBC
Rimifon
★☆☆☆☆☆☆☆☆☆
积分:264
发帖:296
登录:2018/6/22
注册:2006/6/28
(1楼)【原创】2008 R2 x64下使用DbHelper.sct + OleDb + ODBC
通常 x64系统的IIS访问Access是通过设置“启用32位进程”来解决的,我们能从进程中看到w3sp.exe的后面多了一个 *32,下面给出一个64位w3wp.exe进程下访问Access数据库的方法:

1、Cmd下进入DbHelper.sct所在目录,注册为32位的组件(右键默认注册的是64位的):
regsvr32 -i:DbHelper.sct C:\Windows\SysWow64\ScrObj.dll

这样,已经可以直接通过WSH(默认的64位的WScript.exe)调用组件访问ODBC和OleDb了。但是ASP可能暂时还不能调用组件,系统日志提示IUSR帐号无权激活组件,这时,我们进行下面的操作解决:

2、开始 - 管理工具 - 组件服务,在组件服务的DCOM 配置中,找到组件(一般是最后一个)右键 - 属性 - 安全,启动和激活权限,自定义,编辑,添加everyone或者IUSR的本地启动和激活即可。

现在,可以在64位的w3wp.exe进程中odbc和oledb来访问Access等数据库了 :)


时间:2010年12月8日 9:47:26 IP:已记录 引用 回复
Rimifon
★☆☆☆☆☆☆☆☆☆
积分:264
发帖:296
登录:2018/6/22
注册:2006/6/28
(2楼)
经测试,当IIS使用64位进程的时候,才需要第二步操作。


时间:2010年12月9日 9:21:17 IP:已记录 引用 回复
Rimifon
★☆☆☆☆☆☆☆☆☆
积分:264
发帖:296
登录:2018/6/22
注册:2006/6/28
(3楼)
DbHelper.sct地址:http://www.fengyun.org/Down/DbHelper.sct
相关说明:
对象创建方法:
For VBS:
    set DH = GetObject("script:http://www.fengyun.org/Down/DbHelper.sct")
For JS:
    var DH = GetObject("script:http://www.fengyun.org/Down/DbHelper.sct");
建议本地调用,例如:
    set DH = GetObject("script:" & Server.MapPath("DbHelper.sct"))
如果服务器上已注册该组件,则可使用:
    set DH = Server.CreateObject("Rimifon.DataHelper")

属性列表:
ConnStr: 设置/读取连接字符串

方法列表:
SetDB(dbname, dbtype, user, pass, ip, port)
例如:DH.SetDB("test.mdb", "access"),也可直接设置DH.ConnStr。

RecordSet(/* connstr */)
例如:Set Rs = DH.RecordSet()。参数connstr可以省略。当一次执行多次SQL语句时建议使用同一个Rs对象,以减少数据库打开关闭次数。

NonQuery(sql /* , Rs */)
执行SQL命令并返回受影响的行数,参数Rs可省略。

Scalar(sql /* , Rs */)
返回第一行第一列数据,参数Rs可省略。

DataSet(sql /* , /* pagesize, pagenum , */ Rs */)
执行返回指定页数据的JS数组(分页执行)。(/* */内的参数可省略)
例如:Set Ds = DH.DataSet(sql, Rs)  '获取全部数据,未分页。
Ds有以下属性:
{ length:本页数据量, RecordCount: 总记录数, AbsolutePage: 当前页码, PageCount: 总页数, PageSize: 每页记录数 }

Parameter(sql /* , Rs */)
创建“存储过程”式查询,可以有效防止SQL注入。
例如:Set par = DH.Parameter(sql)
par有如下方法:
    par.Add(value /*, type, len, name */)
    par.AddRange() // 可同时添加多个参数,例如:par.Add(["test", "varchar", 254], "hello")
    par.Execute() // 执行命令,如有数据则返回数组(vbarray)
    par.NonQuery() // 结果参考DH.NonQuery
    par.Scalar()   // 结果参考DH.Scalar
    par.DataSet(/* pagesize, pagenum */)  // 结果参考 DH.DataSet

SetTable(tableNam/* , Rs */)
对指定表进行增删改操作,例如:var tbl = DH.SetTable("Users");
tbl有如下方法:
    tbl.Where("ID=? and Name=?", [1, "Test"])  // 仍然返回tbl对象
    tbl.Insert({ ID : 1, Name : "Test" })
    tbl.Delete(/* where语句, [where 参数] */)
    tbl.Update({ Name : "Test" } /* , where 语句, [where 参数] */)

其他方法列表(请直接参考文档说明):
DH.JsObject(obj).Item(name) 或DH.JsObject.Get(obj, Name)
DH.NewTable(name)
DH.CreateAccess(/* dbpth */)
DH.CompactAccess(/* dbpath */)
DH.CloneDB(/* connStr, backFile */) // 仅支持数据复制到Access
DH.MD5(str)
DH.Close(Rs)  //当自己创建了Rs对象时使用


时间:2012年12月2日 11:13:35 IP:已记录 引用 回复

© Copyright 2006-2018,風雲工作室 All rights reserved.
湘ICP备05009306号QQ登录
操作 1 个库,连接 4 次,执行 9 次,耗时 172 毫秒。