1.设置dataSource
默认情况下,Wheels使用你的app的文件夹名作为dataSourceName(当然这也需要在administrator里配置好),如果你不喜欢你也可以在config/settings.cfm这里面进行设置
<cfset set(dataSourceName="")> dataSourceName是你在administrator自定义的
<cfset set(dataSourceUserName="")> dataSourceUserName是连接DB的name(i.e sa)
<cfset set(dataSourcePassword="")> dataSourcePasswod是连接DB的pass
注意:dataSourceUserName和dataSourcePasswod可以不写
2.建表
CREATE TABLE [dbo].[users](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [varchar](100) COLLATE Chinese_PRC_CI_AS NOT NULL,
[email] [varchar](255) COLLATE Chinese_PRC_CI_AS NOT NULL,
[password] [varchar](15) COLLATE Chinese_PRC_CI_AS NOT NULL,
CONSTRAINT [PK_users] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
users表包含四个字段(id,name,email,password)其中id为主键自增
3.CRUD
(1)在views/users下新建add.cfm
<cfoutput> <h1>Create a New User</h1> #startFormTag(action="create")# <div>#textField(objectName="user", property="name", label="Name")#</div> <div>#textField(objectName="user", property="email", label="Email")#</div> <div>#passwordField(objectName="user", property="password", label="Password")#</div> <div>#submitTag()#</div> #endFormTag()# </cfoutput>
Wheels自带的标签不用解释,与其它的标签没什么不同,最终都会被翻译成html,我们来看objectName="user"这句就是ROR约定胜于配置的体现,这里的单数的user对应着数据库复数的users表。
接下来我们需要在controllers/users.cfc中建立create function来处理add
<cffunction name="create"> <cfset user = model("user").new()> <cfset model("user").create(params.user)> <cfset flashInsert(success="User #params.user.name# created successfully.")> <cfset redirectTo(action="index")> </cffunction>
这句<cfset user = model("user").new()>创建一个空的user对象用来接受add.cfm出过来的数据,这里以及后面代码中的model("user")对应数据库中的users表
最后一句<cfset redirectTo(action="index")>又有一个action,Ok,我们再写一个function来处理这个请求
<cffunction name="index"> <cfset users = model("user").findAll(order="name")> </cffunction>
接下来我们在views/users建立view index.cfm来显示结果
<cfoutput> <h1>Users</h1> <cfif flashKeyExists("success")> <p class="success">#flash("success")#</p> </cfif> <p>#linkTo(text="+ Add New User", action="add")#</p> <table> <thead> <tr> <th>Name</th> <th>Email</th> <th colspan="2"></th> </tr> </thead> <tbody> <cfloop query="users"> <tr> <td>#users.name#</td> <td>#users.email#</td> <td> #linkTo( text="Edit", action="edit", key=users.id, title="Edit #users.name#" )# </td> <td> #linkTo( text="Delete", action="delete", key=users.id, title="Delete #users.name#", confirm="Are you sure that you want to delete #users.name#?" )# </td> </tr> </cfloop> </tbody> </table> </cfoutput>
至此我们已经完成了C和R
下面我们接着完成U和D
我们看到#linkTo(
text="Edit", action="edit", key=users.id,
title="Edit #users.name#"
)#
这是一个超链接,有一个action="edit" OK,我们在controllers/users.cfc建立edit function来处理这个请求
<cffunction name="edit"> <cfset user = model("user").findByKey(params.key)> </cffunction>
接着在views/users建立edit view来显示要edit的user的信息
<cfoutput> <h1>Edit User #user.name#</h1> <cfif flashKeyExists("success")> <p class="success">#flash("success")#</p> </cfif> #startFormTag(action="update")# <div>#hiddenField(objectName="user", property="id")#</div> <div>#textField(objectName="user", property="name", label="Name")#</div> <div>#textField(objectName="user", property="email", label="Email")#</div> <div> #passwordField(objectName="user", property="password", label="Password")# </div> <div>#submitTag()#</div> #endFormTag()# </cfoutput>
同样点submit按钮有需要一个update function来处理(controllers/users.cfc)
<cffunction name="update"> <cfset user = model("user").findByKey(params.user.id)> <cfset user.update(params.user)> <cfset flashInsert(success="User #user.name# updated successfully.")> <cfset redirectTo(action="index", key=user.id)> </cffunction>
<cfset redirectTo(action="index", key=user.id)>又回到了index.cfm
接着处理index.cfm中的#linkTo(
text="Delete", action="delete", key=users.id,
title="Delete #users.name#",
confirm="Are you sure that you want to delete
#users.name#?"
)#
在controllers/users.cfc新建delete function
<cffunction name="delete"> <cfset user = model("user").findByKey(params.key)> <cfset user.delete()> <cfset flashInsert(success="#user.name# was successfully deleted.")> <cfset redirectTo(action="index")> </cffunction>
搞定啦!
分享到:
相关推荐
JavaScript是一种广泛应用于网页开发的脚本语言,它主要负责处理客户端的交互逻辑,而与数据库交互通常是服务器端的任务。然而,随着技术的发展,JavaScript也可以直接与数据库进行通信,尤其是在使用Node.js作为...
在"ZK与后台数据库交互CRUD实例"中,CRUD代表Create(创建)、Read(读取)、Update(更新)和Delete(删除),这是数据库操作的基本动作。在Web应用中,CRUD操作是构建动态数据驱动页面的基础。通过ZK框架,开发者...
《C#简易通讯录源码解析:数据库交互与XML导出》 在计算机编程领域,C#语言以其高效、安全和面向对象的特性被广泛应用于桌面应用开发,尤其是在Windows平台上。本篇将深入探讨一个使用C#开发的简易通讯录小程序,该...
.NET的CRUD(Create, Read, Update, Delete)实例是基于.NET框架进行数据库操作的基本示例,主要用于演示如何使用编程语言如C#或VB.NET与SQL Server数据库进行交互。在这个例子中,我们看到的是使用Visual Studio ...
Hibernate与JDBC对于数据库的性能操作对比事例,配置,更多信息资源
在与底层数据库交互时,SpringMVC通常结合Spring Data JPA或MyBatis等持久层框架一起工作,以实现高效的数据操作。下面我们将深入探讨SpringMVC与数据库交互的核心概念和技术。 1. **DispatcherServlet**:...
本文将详细介绍如何使用Silverlight与数据库进行交互,以一个简单的示例展示Silverlight结合.NET 3.5技术,特别是LINQ数据源和WCF服务,实现分布式数据访问。以下是整个过程的详细步骤: 1. 创建Silverlight应用 ...
在微信小程序开发中,与本地数据库进行数据交互是常见的需求,尤其在实现用户信息存储、商品管理、订单处理等功能时。本案例资源提供了一个全面的示例,涵盖了从后端Java服务到微信小程序前端,再到数据库操作的完整...
在本项目中,我们主要探讨的是如何利用EasyUI框架创建一个具有多级菜单功能的树形结构,并且能够与后台数据库进行动态交互。EasyUI是一个基于jQuery的UI库,提供了丰富的组件,包括我们这里用到的树形控件(tree)。...
这个示例可能是一个教程或者一个简单的项目模板,用于帮助初学者理解如何在实际开发中整合Spring和MyBatis来处理数据库交互。 首先,Spring是一个广泛应用的Java企业级应用框架,它提供了依赖注入(DI)和面向切面...
在“Extjs和后台数据库交互的程序,增删改查”项目中,我们将探讨如何利用ExtJS与后台数据库进行数据的添加、删除、修改和查询操作。 1. **ExtJS的数据模型(Model)** 在ExtJS中,数据模型定义了对象的结构,包括...
这个DEMO提供了简化数据库交互的方法,避免了手动编写大量重复的SQL语句。以下是对这个"Java对数据库CRUD DEMO"的详细解释。 1. **Java JDBC基础**: Java通过Java Database Connectivity (JDBC) API与各种关系型...
Spring Boot JPA MySQL-构建Rest CRUD API示例 有关更多详细信息,请访问: 多练: 安全: 全栈: React + Spring Boot + MySQL示例 React + Spring Boot + PostgreSQL示例 在一个地方同时运行后端和前端: 将...
CRUD,全称为Create(创建)、Read(读取)、Update(更新)和Delete(删除),是数据库管理系统中最基本的操作,涵盖了对数据库数据的所有基本交互。本文将深入探讨这些概念,并结合实际例子,帮助你理解如何在不同...
入门级功能:包括属性(配置),JDBC模板(数据库CRUD),JPA(Hibernate数据库CRUD),Mybatis(数据库CRUD),Mybatis(Mybatis数据库CRUD),thymeleaf(模板解析),beetl(模板解析),freemarker (模板解析)...
在SSH架构中,Controller层会调用Service层的删除方法,Service层通过DAO层与数据库交互,执行删除命令。 这些CRUD操作在实际开发中常常结合使用,例如,SpringCRUD项目可能是一个演示如何利用Spring框架进行数据...
ssm-crud,这是一个ssm的整合crud,内附数据库test6,亲测可用,下载直接运行即可
Struts1通过DAO(Data Access Object)层与数据库交互,可能使用JDBC或者ORM框架如Hibernate进行数据操作。 5. 文件"yy-jquery":这个名字可能代表了与jQuery相关的JavaScript文件或者包含jQuery实现的前端资源,...
2. `models/` - 存放与数据库交互的数据模型。 3. `database/` - 数据库连接和查询相关的代码,可能包含对PostgreSQL的适配器。 4. `generator/` - CRUD API生成器的核心代码,负责解析数据库结构并生成相应的REST ...
在数据库操作中,我们可以创建一个或少数几个共享的DAO(Data Access Object)对象,这些对象负责执行所有的数据库交互,而不是为每一个数据库操作创建新的DAO实例。 在“利用享元模式封装数据库CRUD”中,我们将...