`
lijunaccp
  • 浏览: 160568 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

一个简单的应用(用内置数据库)

阅读更多
领域类:
1.Race.groovy
package com.rt

class Race {
	
	String name
	Date startDate
	String city
	String state
	BigDecimal distance
	BigDecimal cost
	Integer maxRunners=100000
	
	static hasMany=[registrations:Registration]

    static constraints = {
		name(blank:false,maxSize:50)
		startDate(validator:{return(it>new Date())})
		city()
		state(inList:["GA","NC","SC","VA"])
		distance(min:0.0)
		cost(min:0.0,max:100.0)
		maxRunners(min:0,max:1000000)
    }
	
	BigDecimal inMiles(){
		return distance*0.6214
	}
	
	@Override
	public String toString() {
		return "${name},${startDate.format('yyyy/MM/dd')}"
	}
}


2.Registration.groovy
package com.rt

class Registration {
	
	Boolean paid
	Date dateCreated
	
	static belongsTo =	[race:Race,runner:Runner]
	
	static constraints = {
		race()
		runner()
		paid()
		dateCreated()
	}
	
	@Override
	public String toString() {
		return "${race}:${runner}"
	}
}


3.Runner.groovy
package com.rt

import java.util.Date;

class Runner {

	String firstName
	String lastName
	Date dateOfBirth
	String gender
	String address
	String city
	String state
	String zipcode
	String email
	
	static hasMany=[registrations:Registration]

    static constraints = {
		firstName(blank:false)
		lastName(blank:false)
		dateOfBirth()
		gender(inList:['男','女'])
		address()
		city()
		state()
		zipcode()
		email(email:true)
    }
	
	@Override
	public String toString() {
		return "${firstName},${lastName}(${email}"
	}
}


控制器:
1.RaceController.groovy
package com.rt

class RaceController {

	def scaffold=Race
	
//    def index = { 
//		render "hello world"
//	}
}


2.RegistrationController.groovy
package com.rt

class RegistrationController {

	def scaffold=true
	
//    def index = { }
}


3.RunnerController.groovy
package com.rt

class RunnerController {

	def scaffold=true
}


因为是内置数据库,所以每次重启服务器时,数据就丢失,这是grails内部机制,可以用以下办法在每次服务器启动时保存初始数据到内置数据库:
在grails-app/conf/BootStrap.groovy
import com.rt.Race 
import com.rt.Registration 
import com.rt.Runner 
import grails.util.GrailsUtil;

class BootStrap {

    def init = { servletContext ->
		switch(GrailsUtil.environment){
			case "development":
			def jane=new Runner(
				firstName:'三',
				lastName:'张',
				dateOfBirth:(new Date()-365*30),
				gender:'男',
				address:'地址',
				city:'hz',
				state:'NC',
				zipcode:'123456',
				email:'jane@163.com'
				)
				jane.save()
				jane.errors.each {
					println it
				}
				
				def trot=new Race(
					name:'500长跑',
					startDate:(new Date()+90),
					city:'HZ',
					state:'NC',
					distance:500,
					cost:20.0,
					maxRunners:350
				)
				trot.save()
				if(trot.hasErrors()){
					println trot.errors
				}
				
				def reg=new Registration(
					paid:false,
					runner:jane,
					race:trot
				)
				reg.save()
				reg.errors.each { 
					println it
				}
			break
		}
    }
    def destroy = {
    }
}

分享到:
评论

相关推荐

    android系统内置数据库字段描述

    在Android系统中,数据库是一种重要的数据存储方式,尤其对于开发者来说,理解系统内置数据库的字段描述...因此,深入研究和理解Android系统内置数据库的字段描述对于任何Android开发者来说都是一个基本且重要的技能。

    C# WinForm与Access数据库的一个简单应用

    在本文中,我们将深入探讨如何使用C#编程语言和Visual Studio 2008来创建一个基于WinForms的简单通讯录应用,同时结合Access数据库进行数据管理。由于开发者提到对存储过程不够熟悉,我们将主要关注如何通过ADO.NET...

    ASP.net学生信息管理系统,与数据库连接(内置数据库)源代码

    11. **部署**:由于使用了内置数据库,部署过程相对简单,只需将整个应用程序文件夹复制到目标服务器的IIS(Internet Information Services)中即可运行。 通过这个源代码,初学者可以学习到如何在ASP.NET环境中...

    学习使用jdk1.7中内置数据库Derby(一)

    在Java开发环境中,有时我们需要一个轻量级的数据库来快速测试代码或进行原型设计,而JDK 1.7引入的内置数据库Apache Derby就是这样一种工具。这篇教程将带你入门使用Derby,通过两个示例程序——`TestDerbyBasic....

    使用C#语言开发数据库应用系统

    同时,还需要安装一个数据库管理系统,如SQL Server或SQLite,它们为应用程序提供数据存储服务。 二、连接数据库 C#通过ADO.NET库与数据库进行交互。首先,我们需要创建一个`SqlConnection`对象来表示数据库连接。...

    SurveyKing(卷王) 是一个开源免费、功能强大、稳定的调查问卷系统,安装使用非常简单,支持多种数据库,内置 20 多种题

    SurveyKing(卷王) 是一个开源免费、功能强大、稳定的调查问卷系统,安装使用非常简单,支持多种数据库,内置 20 多种题型, 支持多人协作管理问卷。 Java是一种通用的,基于类的,面向对象的编程语言。它是用于...

    Web开发技术实验1(应用JDBC进行数据库开发)

    本实验将指导你如何结合这些知识,构建一个简单的Web应用,体验JDBC和JSP的强大力量。通过实际动手,你会更深入地理解这些技术,为后续的Web开发打下坚实的基础。在实践中遇到问题,别忘了查阅相关文档和资料,不断...

    强烈推荐一个简单而实用的数据库连接池工程

    本篇文章将深入探讨数据库连接池的概念、工作原理以及一个简单而实用的数据库连接池工程。 首先,理解数据库连接池的基本概念。数据库连接池是在应用服务器启动时创建的一组预定义的数据库连接,这些连接在多个用户...

    数据库原理与应用.rar

    第十二章“视图”介绍了视图的概念,它是虚拟表,来源于一个或多个表的查询结果。视图可以简化复杂的查询,提供安全访问控制,以及隐藏基础数据的细节。 7. 实验指导书和考试卷 “课程实验指导书.doc”可能提供了...

    数据库拷贝到应用中

    在Android应用开发中,有时需要预先在应用内部包含一个SQLite数据库,以便在用户首次使用应用时可以直接使用。这个过程通常涉及到将预建的数据库文件从应用的assets目录复制到设备的特定位置,如SD卡或者应用的数据...

    自己写的一个PHP+MYSQL数据库类,简单实用

    2. **错误处理**:为了确保程序的健壮性,类可能还包括异常处理和错误报告机制,如使用`try-catch`结构,或者定义一个`error()`方法来捕获和处理连接失败或其他数据库错误。 3. **预处理语句**:为了防止SQL注入...

    易语言源码一个简单的数据库分页例程.rar

    在这个“易语言源码一个简单的数据库分页例程”压缩包中,我们可以期待找到一个使用易语言实现的数据库分页功能的示例代码。数据库分页在许多应用程序中都是至关重要的,特别是在处理大量数据时,它能有效地提高用户...

    C++Builder数据库开发

    - 数据库的安全性是另一个重要方面,包括用户权限管理、数据加密和防止SQL注入攻击等。C++Builder允许开发者在应用程序级别和数据库级别实施安全策略。 总之,C++Builder提供了全面的工具和技术,使开发者能够高效...

    NetBeans可视化Web开发之数据库应用开发

    NetBeans是一个开源的、跨平台的IDE,它支持多种编程语言,如Java、PHP、HTML5等,同时也提供了强大的可视化设计工具。对于Web开发,NetBeans提供了丰富的功能,包括代码编辑、调试、版本控制以及项目管理等。其可视...

    学生成绩管理系统——数据库应用

    《学生成绩管理系统——数据库应用》是一个典型的网络数据库应用程序,主要使用了VB.NET作为编程语言,结合SQL SERVER 2000作为后端数据库进行开发。这个系统是学生的一个实践项目,展示了如何将编程技术与数据库...

    PB内置OEACLE数据库接口的使用方法

    为了更直观地展示PB如何调用Oracle数据库接口,下面提供一个简单的示例: 1. **定义外部函数:** - 定义一个标准的类(例如`Transaction`),并在其中声明一个外部函数(如`RPCFUNC`)。 - 使用`...

    delphi简单数据库应用程序的创建

    根据提供的部分内容,我们可以详细地分析如何使用Delphi创建一个简单的基于单表的数据库应用程序。 ##### 1. 选择相关组件 - **TDataSounce组件**:用于连接数据源。 - **TTable组件**:负责与具体的数据库表交互...

    Java Diary - JDK自带的java数据库

    Derby是一个嵌入式数据库,这意味着它可以直接在应用程序中运行,无需额外的服务器进程。这对于小型应用或者测试环境来说非常理想,因为它减少了部署的复杂性。Derby支持SQL标准,包括SQL92和部分SQL:2003,使得与...

    Access MDB数据库简易编辑器

    为了解决这一问题,"Access MDB数据库简易编辑器"应运而生,它提供了一个直观、便捷的方式来浏览、编辑和查询MDB文件,无需依赖Access本身。 这个免费的mdb文件浏览器和编辑器,具备了几个核心功能,使用户能够轻松...

Global site tag (gtag.js) - Google Analytics