主题:  【原创】在 ColdFusion 6.1 中动态连接 MDB

woogia

职务:普通成员
等级:1
金币:0.0
发贴:202
注册:2005/6/24 13:05:56
#12005/10/28 1:08:25
看到了论坛上提到的一种用 ConnectString 动态连数据库的方法,但是,在 6.1 下面测试时总是失败,于是看了官方的帮助:

www.macromedia.com/cfusion/knowledgebase/index.cfm?event=view&id=KC.tn_18656&extid=tn_18656&dialogID=18201898&iterationID=3&sessionID=9630c2c3e8b27c107461&stateID=0+0+18209973&mode=simple

找到了解决方法:
To configure this for Microsoft Access, use the following steps:

Create an empty Access database.
Create an Access data source in the ColdFusion Administrator, pointing to the empty database created in step 1.
Use the IN clause within the query, specifying the path to the actual database to be used. <cfquery name="test" datasource="dynamicMDB">
SELECT FirstName
FROM Employees
IN 'C:\mysite\db\cfsnippets.mdb'
</cfquery>



woogia

职务:普通成员
等级:1
金币:0.0
发贴:202
注册:2005/6/24 13:05:56
#22005/10/28 1:10:21
参考压缩包中的 Test003.cfm
其中 Test002.mdb 已经在ODBC中创建为数据源.

<html>
<head>
<title>第4个例程</title>
</head>

<!-- getDirectoryFromPath(getTemplatePath()) 得到当前路径 -->
<CFSET strConn = getDirectoryFromPath(getTemplatePath()) & "\test003.mdb">

<!-- 这里 Test002 是已经建立的一个 ODBC 数据源, 此数据源的数据库我们不必理会, 只要是 Access 数据库即可 -->
<CFQUERY NAME="TestTable" DATASOURCE="Test002">
SELECT id, name, memo FROM TabTest IN '#strConn#'
</CFQUERY>
<!-- 留意这里的 IN 子句, 这才是真正的数据库. -->

<body>

<cfoutput>数据库地址: <p>#strConn#</p></cfoutput>
<CFOUTPUT QUERY="TestTable">
<HR>
#TestTable.id#: #TestTable.name#
(备注: #TestTable.memo#) <BR>
</CFOUTPUT>

</body>
</html>


相关文件(rar):点这儿打开

编辑历史:[此帖最近一次被 woogia 编辑过(编辑时间:2005-10-28 01:18:53)]


woogia

职务:普通成员
等级:1
金币:0.0
发贴:202
注册:2005/6/24 13:05:56
#32005/10/28 1:20:56
此方法要求 ColdFusion 服务器上已经有一个确定名称的ODBC数据源.(这个大家约定一下就OK了)

然后,把站点文件复制到任何位置都可以了.
因为使用 getDirectoryFromPath(getTemplatePath()) 可得到当前文件所在路径.

很完美了.



AdobeIllustrator

职务:普通成员
等级:1
金币:0.0
发贴:12
注册:2005/10/24 19:35:45
#42005/10/28 12:00:29
woogia在上个帖子中说
引用:
此方法要求 ColdFusion 服务器上已经有一个确定名称的ODBC数据源.(这个大家约定一下就OK了)



需要一个约定, 这样就不太通用了.