`
tsinglongwu
  • 浏览: 232806 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

ZK数据库CURD

    博客分类:
  • ZK
阅读更多
1.建立mysql数据库和表:
create database zktodo  character set=utf8;

create table event(

   id varchar(55),

  name varchar(55),

  priority int,

  date date

);


2.新建Dynamic web project,添加ZK supports,建立完成之后添加mysql jdbc jar包到项目build path

3.建立entity和dao

package com.zktodo.dao;

import java.util.Date;

public class MyEvent {
	private String id;
	private String name;
	private int priority;
	private Date date;
	
	public MyEvent(){}
	
	public MyEvent(String id,String name,int priority,Date date){
		this.id = id;
		this.name = name;
		this.priority = priority;
		this.date = date;
	}
	public Date getDate() {
		return date;
	}
	public void setDate(Date date) {
		this.date = date;
	}
	public int getPriority() {
		return priority;
	}
	public void setPriority(int priority) {
		this.priority = priority;
	}
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

package com.zktodo.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;

public class EventDAO {
	private String url = "jdbc:mysql://localhost:3306/zktodo";

	private String user = "root";

	private String pwd = "root";

	public EventDAO() {
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}
	
	public List findAll(){
		Statement stmt = null;
		Connection conn = null;
		List allEvents = new ArrayList();
		try {
			// get connection
			conn = DriverManager.getConnection(url, user, pwd);
			stmt = conn.createStatement();
			ResultSet rs = stmt.executeQuery("select * from event");

			// fetch all events from database
			MyEvent evt;
			while (rs.next()) {
				evt = new MyEvent();
				evt.setId(rs.getString(1));
		        evt.setName(rs.getString(2));
				evt.setPriority(rs.getInt(3));
				evt.setDate(rs.getDate(4));

				allEvents.add(evt);
			}
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}		
		return allEvents;
	}
	
	public boolean delete(MyEvent evt){
		Connection conn = null;
		Statement stmt = null;
		boolean result = false;
		try {
			// get connection
			conn = DriverManager.getConnection(url, user, pwd);
			stmt = conn.createStatement();
			if (stmt.executeUpdate("delete from event where id = '" + evt.getId() + "'") > 0);
			result = true;
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		return result;
	}
	
	public boolean insert(MyEvent evt){
		Connection conn = null;
		Statement stmt = null;
		boolean result = false;
		try {
			// get connection
			conn = DriverManager.getConnection(url, user, pwd);
			stmt = conn.createStatement();
			if (stmt.executeUpdate("insert into event(id,name,priority,date) " +
					"values ('" + UUID.randomUUID().toString() + "','" + evt.getName() +
					"'," + evt.getPriority() + ",'" + new SimpleDateFormat("yyyy-MM-dd HH:mm:ss")

                                        .format(evt.getDate()) + "')") > 0);
			result = true;
			
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		return result;
	}
	
	public boolean update(MyEvent evt){
		Connection conn = null;
		Statement stmt = null;
		boolean result = false;
		try {
			// get connection
			conn = DriverManager.getConnection(url, user, pwd);
		    stmt = conn.createStatement();				
			if (stmt.executeUpdate("update event set name = '" + evt.getName() + 
					"', priority = " + evt.getPriority() + ", date = '" + 
					new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(evt.getDate())+ 
					"' where id = '" + evt.getId() + "'") > 0);
			result = true;
		} catch (SQLException e) {
			e.printStackTrace();
		}finally{
			try {
				stmt.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
			try {
				conn.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
		
		return result;
	}

}


4.新建index.zul文档

<?page title="zk todo index" contentType="text/html;charset=UTF-8"?>
<zk>
<window title="To do list" width="640px" border="normal">

<zscript>

    import com.zktodo.dao.EventDAO; 
    import java.util.ArrayList; 
    import java.text.SimpleDateFormat; 
    import java.util.UUID;
    import com.zktodo.dao.MyEvent;
    
    EventDAO evtdao = new EventDAO(); 
    List allEvents = evtdao.findAll();  
    
    void add(){ 
		//insert into database 
		MyEvent newEvt = new MyEvent(UUID.randomUUID().toString(),
		  name.value,priority.value.intValue(),date.value);
		evtdao.insert(newEvt);

		//synchronized data with database 
		allEvents = evtdao.findAll();

		//insert a listEvent into the listbox 
		Listitem li = new Listitem(); 
		li.setValue(newEvt); 
		li.appendChild(new Listcell(name.value)); 
		li.appendChild(new Listcell(priority.value.toString())); 
		li.appendChild(new Listcell(new SimpleDateFormat("yyyy-MM-dd").format(date.value)));
		box.appendChild(li);
		}
		
		void update(){
		//update database
		MyEvent editEvt = (MyEvent)box.selectedItem.value;
		editEvt.setName(name.value);
		editEvt.setPriority(priority.value);
		editEvt.setDate(date.value);
		  evtdao.update(editEvt);
		
		//update listbox
		List children = box.selectedItem.children;
		((Listcell)children.get(0)).label = name.value;
		((Listcell)children.get(1)).label = priority.value.toString();
		((Listcell)children.get(2)).label = new SimpleDateFormat("yyyy-MM-dd").format(date.value);
		} 
		
		void delete(){
		evtdao.delete((MyEvent)box.selectedItem.value);
		box.removeItemAt(box.getSelectedIndex());
		cleargb();

		}
		void move(){
		name.value = ((MyEvent)box.selectedItem.value).getName();
		priority.value = ((MyEvent)box.selectedItem.value).getPriority();
		date.value = ((MyEvent)box.selectedItem.value).getDate();
		}
		
		void cleargb(){
		name.value = null;
		priority.value = null;
		date.value = null;
		}
  </zscript>  

<listbox id="box" multiple="true"  rows="4" onSelect="move()">
  <listhead>
   <listheader label="Item" />
   <listheader label="Priority" width="50px" />
   <listheader label="Opened" width="90px" />
  </listhead>
  <listitem forEach="${allEvents }" value="${ each }">
   <listcell label="${each.name }"/>
   <listcell label="${each.priority }"/>
   <listcell label="${each.date }"/>
  </listitem>
 </listbox>
    <groupbox>
              <caption label="Event" />
       Item: <textbox id="name" cols="50" />
       Priority: <intbox id="priority" cols="1" />
       Date: <datebox id="date" cols="8"/>
       <button label="Add" width="36px" height="24px" onClick="add()" />
       <button label="Update" width="46px" height="24px" onClick="update()"/>
       <button label="Delete" width="46px" height="24px" onClick="delete()"/>
    </groupbox>
</window>

</zk>


5.运行结果:



初步还行,缺点如下:

1.没有分页,数目多了,只有下拉条

2.缺乏输入合法性判断(包括输入空值)

3.没有唯一性判断

4.缺乏选中多个删除和全部删除


优点:

1).界面好看

2).一个文件搞定CURD

3).中文化很顺利


6.要点

(1)zscript代码

<zscript>
    
    import com.zktodo.dao.EventDAO; 
    import java.util.ArrayList; 
    import java.text.SimpleDateFormat; 
    import java.util.UUID;
    import com.zktodo.dao.MyEvent;
    
    EventDAO evtdao = new EventDAO(); 
    List allEvents = evtdao.findAll();  
    
    void add(){ 
		//insert into database 
		MyEvent newEvt = new MyEvent(UUID.randomUUID().toString(),
		  name.value,priority.value.intValue(),date.value);
		evtdao.insert(newEvt);

		//synchronized data with database 
		allEvents = evtdao.findAll();

		//insert a listEvent into the listbox 
		Listitem li = new Listitem(); 
		li.setValue(newEvt); 
		li.appendChild(new Listcell(name.value)); 
		li.appendChild(new Listcell(priority.value.toString())); 
		li.appendChild(new Listcell(new SimpleDateFormat("yyyy-MM-dd").format(date.value)));
		box.appendChild(li);
		}
		
		void update(){
		//update database
		MyEvent editEvt = (MyEvent)box.selectedItem.value;
		editEvt.setName(name.value);
		editEvt.setPriority(priority.value);
		editEvt.setDate(date.value);
		  evtdao.update(editEvt);
		
		//update listbox
		List children = box.selectedItem.children;
		((Listcell)children.get(0)).label = name.value;
		((Listcell)children.get(1)).label = priority.value.toString();
		((Listcell)children.get(2)).label = new SimpleDateFormat("yyyy-MM-dd").format(date.value);
		} 
		
		void delete(){
		evtdao.delete((MyEvent)box.selectedItem.value);
		box.removeItemAt(box.getSelectedIndex());
		cleargb();

		}
		void move(){
		name.value = ((MyEvent)box.selectedItem.value).getName();
		priority.value = ((MyEvent)box.selectedItem.value).getPriority();
		date.value = ((MyEvent)box.selectedItem.value).getDate();
		}
		
		void cleargb(){
		name.value = null;
		priority.value = null;
		date.value = null;
		}
  </zscript>
 

(2)forEach循环显示

 
<listitem forEach="${allEvents }" value="${ each }">
   <listcell label="${each.name }"/>
   <listcell label="${each.priority }"/>
   <listcell label="${each.date }"/>
  </listitem>


(3)注册事件:

<listbox id="box" multiple="true"  rows="4" onSelect="move()">
.....
       <button label="Add" width="36px" height="24px" onClick="add()" />
       <button label="Update" width="46px" height="24px" onClick="update()"/>
       <button label="Delete" width="46px" height="24px" onClick="delete()"/>


http://www.cnblogs.com/cxccbv/archive/2009/02/08/1386466.html

分享到:
评论

相关推荐

    基于fastapi框架的数据库CURD脚手架设计源码

    本项目是一款基于FastAPI框架的数据库CURD脚手架设计源码,包含45个文件,其中包括35个Python脚本文件、2个JavaScript文件、1个Git忽略文件、1个LICENSE文件、1个ini文件、1个markdown文件、1个png文件、1个css文件...

    JDBC连接数据库CURD

    **JDBC连接数据库CURD详解** Java Database Connectivity (JDBC) 是Java编程语言中用于与各种类型数据库交互的标准API。它允许Java程序执行SQL语句,进行数据的增(Create)、删(Delete)、改(Update)和查(Read...

    mongoDB数据库CURD操作,配有界面

    首先,CURD是创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)操作的首字母缩写,这是任何数据库管理系统中最基本的操作。在MongoDB中,这些操作可以通过MongoDB的Shell或编程语言的驱动程序(如Java)来...

    所有使用数据库的Web应用都\"just CURD Apps(只是CURD应用)

    标题中的“所有使用数据库的Web应用都'just CURD Apps(只是CURD应用)'”指的是在Web开发中,大部分应用程序的核心功能围绕着四个基本操作:创建(Create)、读取(Read)、更新(Update)和删除(Delete),简称CURD...

    zk curd 小例 数据绑定 页面间事件传送 适合初学者

    ZK CURD小例是针对初学者的一个教程,主要涵盖了数据绑定和页面间事件传送这两个核心概念。在Web开发中,ZK是一个基于组件的Java AJAX框架,它提供了丰富的用户界面组件和简单易用的数据绑定机制,使得开发者可以更...

    Android SQLite数据库的CURD.zip

    本教程将详细讲解如何在Android中进行SQLite数据库的CURD操作,即创建(Create)、查询(Query)、更新(Update)和删除(Delete)。 首先,我们需要创建一个SQLite数据库。在Android中,我们通常通过扩展`SQLiteOpenHelper...

    ThinkPHP数据库操作CURD-9.pptx

    ThinkPHP数据库操作CURD-9

    spring boot项目中使用Jpa对mySql数据库进行CURD操作

    在Spring Boot项目中,JPA(Java Persistence API)是一个强大的工具,它允许开发者以面向对象的方式与数据库交互,而无需直接编写SQL语句。JPA是Java EE的一部分,但Spring框架提供了Spring Data JPA模块,使得在...

    比较通用的XML数据操作类(CURD)

    它在很多领域被广泛使用,尤其是在Web应用程序中替代或补充数据库进行数据管理。本篇将介绍一个针对XML数据进行CRUD(Create、Read、Update、Delete)操作的通用类库,并探讨如何在ASP.NET 2.0环境中实现这一功能。 ...

    maven springmvc mybatis整合 数据库操作curd

    在本教程中,我们将深入探讨如何使用Maven、Spring MVC和MyBatis这三大核心技术来构建一个完整的Web应用程序,实现数据库的CURD(创建、读取、更新和删除)操作。这个过程对于初学者来说是极其有价值的,因为它涵盖...

    MyBatis3操作数据库(CURD)

    MyBatis3是一款轻量级的Java持久层框架,它主要负责数据库的CRUD(创建、读取、更新和删除)操作。这个框架的核心理念是将SQL语句与Java代码分离,通过XML或注解的方式配置映射文件,实现动态SQL,增强了对数据库...

    Laravel框架数据库CURD操作、连贯操作总结

    Laravel提供了强大的Eloquent ORM(对象关系映射),但同时也支持使用查询构造器进行数据库CURD(创建、读取、更新、删除)操作。本篇文章将对Laravel的查询构造器进行深入的总结。 一、查询操作 1. **检索表中的...

    angularjs CURD Example

    这个"angularjs CURD Example"是一个示例项目,旨在教授如何在AngularJS中实现创建(Create)、读取(Read)、更新(Update)和删除(Delete)这四个基本的数据操作,也就是常说的CRUD操作。在Web应用开发中,CRUD...

    ssh_test.zip_SSH+CURD

    CURD是数据库操作的基本概念,代表Create(创建)、Read(读取)、Update(更新)和Delete(删除)四种基本操作。这个"ssh_test.zip_SSH+CURD"的压缩包很可能是关于如何通过SSH连接到远程服务器并执行数据库CURD操作...

    pdo pdo封装函数

    pdo链接数据库封装类库,用于数据库操作,执行数据库curd操作

    go-curd:对数据库的CURD操作 学习

    在编程领域,CURD是创建(Create)、读取(Retrieve)、更新(Update)和删除(Delete)的缩写,这些是数据库操作的基本动作。本文将深入探讨使用Go语言进行MySQL数据库的CURD操作,这对于我们理解如何在Go中与数据库交互至...

    基于Python的Sqlite3助手类库,采用连贯操作实现数据库的CURD功能+源代码+文档说明

    连接数据库只需要提供数据库路径即可,使用下面的代码,连接到数据库文件并返回一个数据库对象。 ``` testDb = SqliteHelper.Connect(r'数据库路径') ``` &gt; 如果数据库路径存在则直接连接数据库,若数据库不存在则...

    一个CURD的demo

    在IT行业中,CURD操作是数据库管理的基础,它代表了Create(创建)、Read(读取)、Update(更新)和Delete(删除)这四个最常见的数据库交互动作。本篇将围绕这个"一个CURD的demo"进行深入讲解,结合提供的xxm_...

    SSH简单CURD有Oracle数据库

    在这个项目中,“SSH简单CURD有Oracle数据库”标题表明我们将讨论如何利用SSH框架进行基本的创建(Create)、读取(Read)、更新(Update)和删除(Delete)操作,并结合Oracle数据库来存储和管理数据。 Spring框架...

Global site tag (gtag.js) - Google Analytics