1.创建数据库,数据表

用MySQL数据库和Navicat for MySQL工具创建表

2.创建实体类——反应表结构(列——变量)

也就是对应表建立的gets和sets方法,实体类的名字一般都与数据库表的名字相同

3.创建数据访问层。

1.BaseDAO(父类)代码:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BaseDao {
protected Connection conn = null;
protected PreparedStatement pst = null;
protected ResultSet rs = null;
private String Driver = "com.mysql.jdbc.Driver";
private String url = "jdbc:mysql://localhost:3306/apple";// 这里apple是数据库名
private String user = "root";
private String password = "root"; public void OpenConnection() throws ClassNotFoundException, SQLException {
Class.forName(Driver);
conn = DriverManager.getConnection(url, user, password);
}
public void CloseAll() throws SQLException {
if (rs != null) {
rs.close();
}
if (pst != null) {
pst.close();
}
if (conn != null && conn.isClosed() == false) {
conn.close();
}
}
}

2.XXXDAO(子类)(一个表一个dao类)

1.如果返回多条数据,对应ArrayList集合类型

2.方法的参数,是sql执行的条件where 有条件,传参;where没有条件,不用传参

public class LotForDAO extends ConnDAO{
public int insert(LotInfor lot){
int result=0;
try {
super.openConn();
String sql="insert into LotInfor(lotType,lotNum1,lotNum2,lotNum3,lotNum4,lotNum5,lotNum6,lotNum7,lotTerm) values(?,?,?,?,?,?,?,?,?)";
super.psm = super.conn.prepareStatement(sql);
psm.setString(1, lot.getLotType());
psm.setString(2, lot.getLotNum1());
psm.setString(3, lot.getLotNum2());
psm.setString(4, lot.getLotNum3());
psm.setString(5, lot.getLotNum4());
psm.setString(6, lot.getLotNum5());
psm.setString(7, lot.getLotNum6());
psm.setString(8, lot.getLotNum7());
psm.setString(9, lot.getLotTerm());
result=psm.executeUpdate();
} catch (ClassNotFoundException ex) {
Logger.getLogger(LotForDAO.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(LotForDAO.class.getName()).log(Level.SEVERE, null, ex);
}finally{
try {
super.closeConn();
} catch (SQLException ex) {
Logger.getLogger(LotForDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}
return result;
} public int delete(String lotTerm){
int result=0;
try {
super.openConn();
String sql="delete from LotInfor where lotTerm=?";
super.psm=super.conn.prepareStatement(sql);
psm.setString(1, lotTerm);
result=psm.executeUpdate();
} catch (ClassNotFoundException ex) {
Logger.getLogger(LotForDAO.class.getName()).log(Level.SEVERE, null, ex);
} catch (SQLException ex) {
Logger.getLogger(LotForDAO.class.getName()).log(Level.SEVERE, null, ex);
}finally{
try {
super.closeConn();
} catch (SQLException ex) {
Logger.getLogger(LotForDAO.class.getName()).log(Level.SEVERE, null, ex);
}
}
return result;
} }

4.业务逻辑(省略)

5.表示层(前端页面swing/jsp)

线程的代码:

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package apputil; import appframe.JFrameMain;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JOptionPane; /**
*
* @author wjw
*/
public class MyThread implements Runnable { JLabel[] arr;
JButton jbu;
JFrameMain jf;
ImageIcon shan = new ImageIcon(this.getClass().getResource("../appimg/red2.gif"));
ImageIcon jing = new ImageIcon(this.getClass().getResource("../appimg/red1.gif")); public MyThread(JLabel[] arr, JButton jbu,JFrameMain jf) {
this.arr = arr;
this.jbu = jbu;
this.jf=jf;
} public void run() {
this.jbu.setEnabled(false);
int random = (int) (Math.random() * 200) + 40;
int sleep = 550;
for (int i = 0; i <= random; i++) {
arr[JFrameMain.index].setIcon(jing);
if (JFrameMain.index >= 23) {
JFrameMain.index = -1;
}
arr[JFrameMain.index + 1].setIcon(shan);
JFrameMain.index = JFrameMain.index + 1;
if (i < 10) {
sleep = sleep - 50;
}
if (i + 10 > random) {
sleep = sleep + 50;
}
try {
Thread.sleep(sleep);
} catch (InterruptedException ex) {
Logger.getLogger(MyThread.class.getName()).log(Level.SEVERE, null, ex);
}
} int fenshu = Integer.parseInt(jf.jguageNum.getText());
int num1 = Integer.parseInt(jf.jLabel36.getText());
int num2 = Integer.parseInt(jf.jLabel37.getText());
int num3 = Integer.parseInt(jf.jLabel38.getText());
int num4 = Integer.parseInt(jf.jLabel39.getText());
int num5 = Integer.parseInt(jf.jLabel48.getText());
int num6 = Integer.parseInt(jf.jLabel49.getText());
int num7 = Integer.parseInt(jf.jLabel50.getText());
int num8 = Integer.parseInt(jf.jLabel51.getText()); switch (JFrameMain.index) {
case 5:
case 10:
case 16:
case 22:
if(num8>0){
jf.jguageNum.setText(Integer.toString(fenshu + 5 * num8));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 0:
case 11:
case 12:
if(num7>0){
jf.jguageNum.setText(Integer.toString(fenshu + 10 * num7));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 6:
case 17:
case 18:
if(num6>0){
jf.jguageNum.setText(Integer.toString(fenshu + 10 * num6));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
} else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 1:
case 13:
case 23:
if(num5>0){
jf.jguageNum.setText(Integer.toString(fenshu + 10 * num5));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
} else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 7:
case 8:
if(num4>0){
jf.jguageNum.setText(Integer.toString(fenshu + 20 * num4));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 19:
case 20:
if(num3>0){
jf.jguageNum.setText(Integer.toString(fenshu + 20 * num3));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 14:
if(num2>0){
jf.jguageNum.setText(Integer.toString(fenshu + 20 * num2));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 15:
if(num2>0){
jf.jguageNum.setText(Integer.toString(fenshu + 40 * num2));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 2:
if(num1>0){
jf.jguageNum.setText(Integer.toString(fenshu + 50 * num1));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 3:
if(num1>0){
jf.jguageNum.setText(Integer.toString(fenshu+100*num1));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
case 4:
if(num1>0){
jf.jguageNum.setText(Integer.toString(fenshu+25*num1));
JOptionPane.showMessageDialog(null, "恭喜,您运气真好!", "提示", JOptionPane.INFORMATION_MESSAGE);
}else{
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE);
}
break;
default:
JOptionPane.showMessageDialog(null, "继续努力,谢谢", "提示", JOptionPane.INFORMATION_MESSAGE); }
this.jf.jLabel36.setText("0");
this.jf.jLabel37.setText("0");
this.jf.jLabel38.setText("0");
this.jf.jLabel39.setText("0");
this.jf.jLabel48.setText("0");
this.jf.jLabel49.setText("0");
this.jf.jLabel50.setText("0");
this.jf.jLabel51.setText("0");
this.jbu.setEnabled(true);
}
}

  

NetBeans数据库笔记---三层架构的更多相关文章

  1. Delphi数据库的三层架构的问题和解决方法

    Delphi数据库的三层架构的问题和解决方法 原创 2014年03月26日 16:26:03 标签: Delphi / 数据库三层架构 / DCOM / DCOMConnection 790 //-- ...

  2. C# 学习笔记 三层架构系列(控件一)

    下面是我两周的学习总结:这是我写给自己的,如果哪位朋友有幸看到这篇文章就是缘分.如果所说的内容不对,就请纠正.勿喷!!! 想要将两周的学习知识通过文字.通过代码.通过图片储备起来,以防自己那天思维短路 ...

  3. Java学习笔记——三层架构

    Layer: UI层: user interface 用户接口层 Biz层:   service business login layer 业务逻辑层 DAO层:   Date Access Obje ...

  4. Asp.Net T4模板生成三层架构

    1.T4 Editor安装 T4:根据模板生成文件,例如model等 vs中默认t4模板编码是没有提示和高亮的,需使用以下插件,免费的 https://t4-editor.tangible-engin ...

  5. MVC——三层架构笔记、1

    三层架构MVC笔记1. DAL——数据访问层:(专门与数据库交互,增删查改的方法都在这:需引用MODEL层) BLL——业务逻辑层:(页面与数据库之间的桥梁:需引用DAL.MODEL层) MODEL— ...

  6. [知了堂学习笔记]_MVC设计模式与JavaWEB三层架构

    一.MVC设计模式 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controlle ...

  7. 基于三层架构下的公共数据访问方法(Sqlite数据库)

    作者总结了一下,使用Winform的三层架构做窗体应用程序,在数据访问方面,有用到纯sql语句方法.参数方法.存储过程方法. 那么什么是三层架构呢? UI---存放Form窗体---(用户所关心的) ...

  8. 关于对javaUtils封装和三层架构的笔记

    1.什么是三层架构: 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer).业务逻辑层(Business ...

  9. JavaWeb笔记(六)MVC与三层架构

    MVC M Model 模型 JavaBean 完成具体的业务操作,如:查询数据库,封装对象 V View 视图 JSP 展示数据 C Controller 控制器 Servlet 获取用户输入,调用 ...

随机推荐

  1. 配置 Nginx 的目录浏览功能

    Nginx 默认是不允许列出整个目录的,需要配置 Nginx 自带的 ngx_http_autoindex_module 模块实现目录浏览功能 . location / { alias /opt/fi ...

  2. 微信开放平台创建android应用时怎么获取应用签名

    之前微信开放平台中申请创建应用,没有整理,过了好久,又重新百度,今天索性整理了,以供童鞋们备用. 1.微信开发平台注册申请成开发者账号,就此略过 2.在管理中心选择创建移动应用.按照严格要求填写.上传 ...

  3. SQL 必知必会·笔记<3>过滤数据

    在同时使用ORDER BY 和WHERE 子句时,应该让ORDER BY 位于 WHERE 之后,否则将会产生错误 WHERE子句操作符 范围值检查 使用BETWEEN 操作符,示例: SELECT ...

  4. 深度学习之PyTorch实战(1)——基础学习及搭建环境

    最近在学习PyTorch框架,买了一本<深度学习之PyTorch实战计算机视觉>,从学习开始,小编会整理学习笔记,并博客记录,希望自己好好学完这本书,最后能熟练应用此框架. PyTorch ...

  5. Linux的进程线程及调度

    本文为宋宝华<Linux的进程.线程以及调度>学习笔记. 1 进程概念 1.1 进程与线程的定义 操作系统中的经典定义: 进程:资源分配单位. 线程:调度单位. 操作系统中用PCB(Pro ...

  6. WCF返回表datatable时的解决

    在WCF中有时返回值类型是一张表,就会遇到反序列化的问题.解决该问题我归纳了两种方法: 1.根据Model层的类,在服务器端将Table转化成List,在客户端再将List转化为table /// 将 ...

  7. 你不知道的Linux(持续更新中)

    1.关于GNU.Linux.GNU/Linux三者的关系 GNU 项目创始于一九八四年,旨在开发一个类似 Unix ,且为自由软件的完整的操作系统: GNU 系统.(也可把GNU看成一个自由软件工程) ...

  8. 安装Eclipse时遇到”java was started but returned exit code = 13“如何解决?

    有的时候运行开发工具时会出现java was started but returned exit code = 13......的提示,绝大多数的问题都是版本问题: 我们可以打开命令行工具cmd 输入 ...

  9. mysql查看执行sql语句的记录日志

    开启日志模式 -- 1.设置 -- SET GLOBAL log_output = 'TABLE';SET GLOBAL general_log = 'ON';  //日志开启 -- SET GLOB ...

  10. 8.中断按键驱动程序之poll机制(详解)

    本节继续在上一节中断按键程序里改进,添加poll机制. 那么我们为什么还需要poll机制呢.之前的测试程序是这样: ) { read(fd, &key_val, ); printf(" ...