转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 站长学院 >> 网页制作 >> 正文
ColdFusionMX 编程指南 第四期         ★★★★

ColdFusionMX 编程指南 第四期

作者:闵涛 文章来源:闵涛的学习笔记 点击数:1036 更新时间:2009/4/23 14:18:34

ColdFusionMX Basic Tag编程之二

版权所有 请勿转载:

系统及环境需求:

  •  Window2000/XP
  •  256M RAM
  •  Coldfusion MX(Developer Edition)
  •  Microsoft Access
  •  任何一款文本编辑器(本教程默认为Coldfusion Studio 5 + DreamweaverMX)
  •  本教程采用 Coldfusion Standalone的模式,端口为8500。如需要采用IIS捆绑方式,请在安装过程中修改即可。

序言

  今天要讲一下Coldfuison5和coldfusionMX的基本区别。Coldfusion5以前的版本(包括coldfusion5)还是一个以编程脚本为主的语言,这种语言提供了由特定的coldfusion server来进行脚本解释和程序维护的功能,Coldfusion5以前的版本核心是不具备J2EE体系核心的。ColdfusionMX我们在第一期的教程中就知道了它是基于J2EE的核心基础架构,在此之上,具备了一些内置的功能强大的企业开发包和Tag集合,其中包括了整合了Generator部分功能的最新的cfchart,这个新标签能够解决在开发企业应用时最重要的报表图形的生成功能,此外还包括了一个完全版的全文搜索引擎,融合了新的开发方式的cf component以及web services的支持。所以,我们可以把coldfusion5到coldfusionmx看作是一次飞跃。一次从单纯的脚本环境到企业级应用的飞跃。

  另外,coldfusionMX里面有很多的变化,类似于flashMX的action一样,有很多tag从coldfusion5演变到coldfusionMX之后就有一些属性发生了变化,如果不了解这些变化,硬把coldfusion5编写的程序往MX上套,是会出错的。好了,那我们开始这一期的教程。

第一部分 Basic tag编程深入

  上一期我们讲了操作数据库的第一个重要的标签,cfquery。但是我们只是讲解了如何使用cfquery进行数据库的查询,现在我们深入讲解一下cfquery的作用,然后在来讲解另外两个操作数据库的标签cfinsert和cfupdate。

  先来看看cfsnippets这个数据库中employees这个表的构造。

  随着教程的深入,代码的编写采用verdana字体的8号,并且使用篮色,请学习者注意。

  我们可以使用cfquery来做数据的插入,编写的形式非常的简单,代码的方式如下:

<CFTRANSACTION>
< CFQUERY NAME="test" DATASOURCE="cfsnippets">
Insert Into Employees(FirstName,lastname,email,phone,department)
Values('Mj','king','mjking@263.net','1234567','Technical')
< /CFQUERY>
< CFQUERY NAME="test" DATASOURCE="cfsnippets">
Select MAX(Emp_id) as number_id
From Employees
< /CFQUERY>
< /CFTRANSACTION>
插入数据成功!
你新插入的id是:
< cfoutput query="test">#number_id#</cfoutput>

  下面我们来讲解一下上面的这一段代码,其中最主要的部分是应用了两个cfquery的标签的组合,实现了数据插入和最新插入的员工id的查询。其中第一个cfquery插入了一组记录到Employees这个table里去,除了没有处理emp_id这个默认的员工id的自增主键之外,其他的几个字段都对应给予了插入。在插入之后,第二个cfquery做的是将刚刚插入的记录的emp_id给查询出来。比如我们要开发一个内部网的员工模块,有可能在做了新员工的输入之后,马上系统要告知该员工的工号,就可以采用这种方式。但是会有一个问题,如果你在请求server做insert的同时,有另外一个人正好刚刚做完insert,正要查询出他的id,这样有可能查出的id是你的,因为这时候,系统有可能响应给对方你刚做完insert的记录的emp_id的值。为了避免这样的现象发现,我们在两个cfquery之外使用了Cftransaction这个标签。

  Cftransaction是一个协调事务处理的标签,它把处理不同事务的作为一个整体,如果其中的某一个操作不成功,那么所有的操作都会被服务器还原(就是roll back),有这样的功能真的是太好了。

  另外,使用cfquery还可以进行数据库的update,让我们来看下面的代码:

<Cfparam name="URL.number_id" default="20">
<Cfquery name="test" datasource="cfsnippets">
Select emp_id
From Employees
Where emp_id=#URL.number_id#
</Cfquery>
<cfoutput>#test.emp_id#</cfoutput>
<cfoutput>#test.recordcount#</cfoutput>
<Cfif test.RecordCount EQ 0>
没有这个员工记录
<Cfabort>
</Cfif>
<!--- 进行数据库更新 --->
<Cfquery name="test" datasource="cfsnippets">
Update Employees
Set FirstName='Zerlot',
LastName='Ma',
email='zerlot.ma@hdtworld.com',
phone='7654321'
department='market'
Where emp_id=#URL.number_id#
</Cfquery>
<cfoutput>更新成功!</cfoutput>

  好,我们使用cfquery做成功了insert和update,那么下面我们开始讲解cfinsert和cfupdate这两个标签。

  在开始讲解之前,我们将简要说明一下access操作中文的问题,目前从access数据库中把中文显示出来还没有解决方案,至少到2002年7月还没有。但是,进行access数据库的插入已经可以解决了,解决方式如下:

  在你的应用根目录下建立一个application.cfm文件,加入下面这行代码:

<cfcontent type="text/html; charset=gb2312">

  在你的每一个cfm页面模板的开头加入下面代码:

<cfcontent type="text/html; charset=gb2312">
< cfset setEncoding("URL", "gb2312")>
< cfset setEncoding("Form", "gb2312")>

  然后使用form表单或者cfquery进行插入中文就没有问题了。但是从access中查询并显示某一条中文记录还是有问题,目前作者还没有确切的方法。所以作者本人的教程使用access是出于简单,但是如果是开发者使用cfmx来开发应用的话,劝各位使用sqlserver和oracle的企业数据库,这些数据库都没有什么问题。

  Cfinsert和cfupdate是coldfusion中两个常用的tag,通过点击DreamweaverMX中CFbasic的两个图标来操作它们。

  点击图标,将执行cfinsert这个标签的设定功能。点击后的窗口如下所示:

  以上经常用到的属性是datasource、tablename和Formfields三个属性,其中datasource是你在coldfusion administrator数据源设定中设置好的名称,tablename是要更新的表,Formfields是和数据库表中字段对应名称一致的form控件名称(注意必须一致才行)。我们看下面的列子:

<!--- 下面的代码使用了cfinsert更新了数据表格,没有使用cfquery--->
< !--- 如果表单有提交的动作,那么开始处理cfinsert动作--->
< cfif IsDefined ("form.posted")>
< cfinsert dataSource = "cfsnippets"
tableName = "Comments"
formFields = "Email,FromUser,Subject,MessText,Posted">
< h3><I>你的记录已经被提交。</i></h3>
< /cfif>
< !--- 使用cfquery显示插入数据 --->
< cfquery name = "GetComments" dataSource = "cfsnippets">
SELECT
CommentID, EMail, FromUser, Subject, CommtType, MessText, Posted, Processed
FROM
Comments
< /cfquery>
< html>
< head></head>
< h3>cfinsert</h3>
< !--- 显示数据 --->
< table>
< tr>
< td>From User</td><td>Subject</td><td>Comment Type</td>
< td>Message</td><td>Date Posted</td>
< /tr>
< cfoutput query = "GetComments">
< tr>
< td valign = top><a href = "mailto:#Email#">#FromUser#</A></td>
< td valign = top>#Subject#</td>
< td valign = top>#CommtType#</td>
< td valign = top><font size = "-2">#Left(MessText, 125)#</font></td>
< td valign = top>#Posted#</td>
< /tr>
< /cfoutput>
< /table>
< p>Next, we’ll offer the opportunity to enter a comment:
< !---输入表单--->
< form action = "cfinsert.cfm" method = "post">
< pre>
Email: <input type = "Text" name = "email">
From: <input type = "Text" name = "fromUser">
Subject:<input type = "Text" name = "subject">
Message:<textarea name = "MessText" COLS = "40" ROWS = "6"></textarea>
Date Posted: <cfoutput>#DateFormat(Now())#</cfoutput>
< !---动态显示时间--->
< input type = "hidden"
name = "posted" value = "<cfoutput>#Now()#</cfoutput>">
< /pre>
< input type = "Submit"
name = "" value = "insert my comment">
< /form>

那么我们执行的结果可以看到浏览器显示了我们刚刚输入的信息,这里作者就不给出截图,目的是让大家自己去执行,自己去查看结果,注意,本数据库为access,应用程序不支持中文,如果各位想测试中文,可以构建自己的应用程序来测试中文(使用sqlserver),只须在每个页面的开头中加入如下代码即可:

<cfprocessingdirective pageencoding="gb2312">
< cfcontent type="text/html; charset=gb2312">
< cfset setEncoding("URL", "gb2312")>
< cfset setEncoding("Form", "gb2312")>


[网页制作]Macromedia ColdFusionMX 教程  [网页制作]ColdFusionMX 编程指南 第三期
[网页制作]ColdFusionMX 编程指南 第二期  [Web开发]JDOM/XPATH编程指南
[Web开发]ColdFusionMX 编程指南 第一期  
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Web开发  · 网页制作
    · 平面设计  · 网站运营
    · 网站推广  · 搜索优化
    · 建站心得  · 站长故事
    · 互联动态
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台