NetBeans数据库笔记---三层架构
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数据库笔记---三层架构的更多相关文章
- Delphi数据库的三层架构的问题和解决方法
Delphi数据库的三层架构的问题和解决方法 原创 2014年03月26日 16:26:03 标签: Delphi / 数据库三层架构 / DCOM / DCOMConnection 790 //-- ...
- C# 学习笔记 三层架构系列(控件一)
下面是我两周的学习总结:这是我写给自己的,如果哪位朋友有幸看到这篇文章就是缘分.如果所说的内容不对,就请纠正.勿喷!!! 想要将两周的学习知识通过文字.通过代码.通过图片储备起来,以防自己那天思维短路 ...
- Java学习笔记——三层架构
Layer: UI层: user interface 用户接口层 Biz层: service business login layer 业务逻辑层 DAO层: Date Access Obje ...
- Asp.Net T4模板生成三层架构
1.T4 Editor安装 T4:根据模板生成文件,例如model等 vs中默认t4模板编码是没有提示和高亮的,需使用以下插件,免费的 https://t4-editor.tangible-engin ...
- MVC——三层架构笔记、1
三层架构MVC笔记1. DAL——数据访问层:(专门与数据库交互,增删查改的方法都在这:需引用MODEL层) BLL——业务逻辑层:(页面与数据库之间的桥梁:需引用DAL.MODEL层) MODEL— ...
- [知了堂学习笔记]_MVC设计模式与JavaWEB三层架构
一.MVC设计模式 MVC模式(Model-View-Controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model).视图(View)和控制器(Controlle ...
- 基于三层架构下的公共数据访问方法(Sqlite数据库)
作者总结了一下,使用Winform的三层架构做窗体应用程序,在数据访问方面,有用到纯sql语句方法.参数方法.存储过程方法. 那么什么是三层架构呢? UI---存放Form窗体---(用户所关心的) ...
- 关于对javaUtils封装和三层架构的笔记
1.什么是三层架构: 三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:界面层(User Interface layer).业务逻辑层(Business ...
- JavaWeb笔记(六)MVC与三层架构
MVC M Model 模型 JavaBean 完成具体的业务操作,如:查询数据库,封装对象 V View 视图 JSP 展示数据 C Controller 控制器 Servlet 获取用户输入,调用 ...
随机推荐
- Java NIO中的缓冲区Buffer(二)创建/复制缓冲区
创建缓冲区的方式 主要有以下两种方式创建缓冲区: 1.调用allocate方法 2.调用wrap方法 我们将以charBuffer为例,阐述各个方法的含义: allocate方法创建缓冲区 调用all ...
- Django | 模型类变更后生成迁移文件,报错:You are trying to add a non-nullable field 'BookName' to BookInfo without a default....
报错: You are trying to add a non-nullable field 'BookName' to BookInfo without a default; we can't do ...
- JS nodeList转数组,兼容IE低版本
一.前言 nodeList转数组貌似很少会这样去操作,但我在做图片懒加载时,我获取了所有需要做懒加载的img元素,也就是一个NodeList对象,打个比方: 对这些元素进行src修改后,我想将此项从N ...
- 设计模式教程(Design Patterns Tutorial)笔记之一 创建型模式(Creational Patterns)
目录 · 概述 · Factory · What is the Factory Design Pattern? · Sample Code · Abstract Factory · What is t ...
- SpringBoot(4) SpringBoot热部署
热部署,就是在应用正在运行的时候升级软件,却不需要重新启动应用. 使用springboot结合dev-tool工具,快速加载启动应用 官方地址:https://docs.spring.io/sprin ...
- 来自于一个问题的回答对自己的反思 php怎么发送邮件?发送邮件插件PHPMailer
前言: 昨天用手机无意点了一下博问,看见了一个朋友问了一个关于php发邮件不能添加发件人名称的问题,试着看了一下代码,觉得自己发现了问题所在,谁知道只是一知半解没有真正发现问题所在,看来有一段时间没有 ...
- js a标签 + ajax 多参数穿参
<span onclick="return haoping('{$row['jv_id']}','1')"> function haoping(id,type){ $. ...
- Django学习(6)配置静态文件
本文将详细讲述如何在Django中配置静态文件,如图片(images),JavaScript,CSS等. 我们将要实现的网页如下: 当按下按钮"Change Text"时, ...
- Visual Studio Ultimate 2013
简体中文版 SHA-1: 07313542D36ED8BEEF18520AA4F15E33E32C7F77 http://download.microsoft.com/download/0/7/5/0 ...
- 可能会导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束。
错误提示:可能会导致循环或多重级联路径.请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其他 FOREIGN KEY 约束. 原因:自表连接(同一张表 ...