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
分享到:
相关推荐
【Android】开发BLE 串口调试工具,用来和底层进行一些握手协议的调试。
机械设计自动锁垫片机(sw18可编辑+工程图+BOM)非常好的设计图纸100%好用.zip
基于Mediapipe的手势识别前端应用可执行程序+说明.zip # 项目简介 * 基于AutoHotkey制作的摄像头手势识别软件。能让你的电脑摄像头在识别手势后,执行自定义的电脑操作命令。同时也集成了语音识别功能,可调用Windows自带API实现简单的语音助手功能。 * 手势识别调用了高性能的Mediapipe动态链接库来免部署实现。而电脑自动化操作使用AutoHotkey脚本语言来实现,它能更方便的对电脑进行深度调用和流程自动化处理。 # 使用介绍 * 测试环境:Win10 64位(专业版完整镜像) * **第一次运行 Visual_Gesture_Recognition.exe**时,会提示下载手势识别的**依赖包**。点击**确定**后,跟着提示**点击自动下载**
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
python烟花代码python烟花代码.zip python烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zippython烟花代码.zip
如何提高APP商业变现能力.docx
Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。
在数字化时代,数据已成为一种宝贵的资源,而数据分析则是解锁这一资源的关键。数据分析是指运用适当的统计分析和数据挖掘方法,对收集来的大量数据进行详细的研究和概括总结,以最大化地开发数据的功能,发挥数据的作用。 数据分析的过程涉及数据的收集、整理、转化、建模和解释等多个环节。通过对比分析法、分组分析法、结构分析法等多种方法,我们能够深入挖掘数据中的隐藏信息和内在规律,为企业决策、市场研究、科学研究等领域提供有力的支持。 数据分析在现代社会中的应用越来越广泛。例如,在市场调研中,通过对消费者需求、竞争品牌分布等数据的分析,企业可以了解市场潜力、竞争优势和定位策略,从而制定有效的市场推广策略。在社交媒体数据分析中,企业可以通过分析用户的关注人群、点赞、转发等行为,揭示用户的兴趣爱好、消费倾向和口碑传播效果,从而制定有针对性的营销策略。 数据分析工具和技术的发展也极大地推动了数据分析的普及和应用。如R语言和Python语言等编程工具,以及SAS等商业化的数据分析软件,都为数据分析提供了强大的支持。这些工具不仅具有丰富的统计函数和图表绘制能力,还具有高度的灵活性和可扩展性,可以满足各种要求
水和废水处理化学品的选择和使用指南
在Python中,可以使用多种方法来创建一个虚拟棋盘。下面是一个简单的示例,使用字符串和循环来创建一个8x8的国际象棋棋盘。 这段代码定义了一个函数print_chessboard,它首先定义了棋盘的一半,然后通过循环来构建整个棋盘。棋盘的每个格子用空格分隔,并且棋盘的行号用数字表示。棋盘的黑白格子使用字符串white和black来表示,其中white表示白格子,而black表示黑格子。 运行这段代码,你会在控制台看到一个8x8的棋盘,其中棋盘的行号从1到8,列号从A到H,棋盘的黑白格子交替出现。 请注意,这个棋盘是虚拟的,仅用于展示布局,并没有实现任何棋盘游戏的逻辑。如果你需要实现一个可以进行游戏的棋盘,你需要添加更多的代码来处理棋子的移动和游戏规则。
系统使用了Modbus协议完成数据的获取工作,通过Mqtt协议与后端进行连接,获取了数据,完成了数据采集工作。后端通过对数据的处理,进行了数据存储,和接口api的处理。通过WebSocket协议来推送数据。前端展示请求的后端数据。通过此流程完成了工业暖通空调系统的开发。
机械设计大倾角波状挡边带式输送机sw17可编辑非常好的设计图纸100%好用.zip
常见移动变现术语(mobile monetization).docx
把input里面的数据替换成自己的数据,打开R,点Run,可以直接出图!文件适合有R语言基础的同学。
福克斯初级和猎犬初级电线追踪工具包使用说明书
数据库实验报告 SJK完整性语言
PDU8000 ATS配电箱-T 快速指南
串口协议 串口通过 YMODEM 协议进行文件传输 开发环境 框架:Qt 5.7.1 编译器:MSVC2015_64bit IDE:Qt Creator 4.2.0 社区版 操作系统:Windows 10 专业版
开发语言:Java JDK版本:JDK1.8(或11) 服务器:tomcat 数据库:mysql 5.6/5.7(或8.0) 数据库工具:Navicat 开发软件:idea 依赖管理包:Maven 代码+数据库保证完整可用,可提供远程调试并指导运行服务(额外付费)~ 如果对系统的中的某些部分感到不合适可提供修改服务,比如题目、界面、功能等等... 声明: 1.项目已经调试过,完美运行 2.需要远程帮忙部署项目,需要额外付费 3.本项目有演示视频,如果需要观看,请联系我 4.调试过程中可帮忙安装IDEA,eclipse,MySQL,JDK,Tomcat等软件 重点: 需要其他Java源码联系我,更多源码任你选,你想要的源码我都有! https://img-blog.csdnimg.cn/direct/e73dc0ac8d27434b86d886db5a438c71.jpeg
SITOP 电源电源电源电源 20 6EP1 536-2AA00 操作手册