NetBeans数据库笔记---三层架构

时间:2021-11-02 22:59:10

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&num; 学习笔记 三层架构系列(控件一)

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

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

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

  4. Asp&period;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. &lbrack;知了堂学习笔记&rsqb;&lowbar;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. js控制滚动条平滑滚动到制定位置

    http://www.daixiaorui.com/read/92.html 滚动到顶部: $('.scroll_top').click(function(){$('html,body').anima ...

  2. 【UXPA工作坊小记】郎学明:做更&OpenCurlyDoubleQuote;有用”的用户研究

    xueminglang@google.com 本来做了一些笔记,但郎老师后来发了相关教材.内容比现场PPT详细的多.由于,本人在网上也没有搜索到相关文章,还是决定做一回码字工,稍作精简后分享给大家. ...

  3. sql xpath 查找包含

    select xcontent.query('/root//*[contains(text()[1], ''中'')]'), column1 from table

  4. java之通过反射,来获得某对象的所有方法&lpar;类方法提取器&rpar;

    参考Thinging in Java 在编程时, 如果不记得一个类是否有某个方法,或者不知道一个类究竟能做些什么,而又不想通过索引或 类的层次结构去查找jdk文档,这时通过反射的小工具能节省很多时间. ...

  5. TextView的属性列表

    网上收集和自己整理的TextView控件中可选择的属性列表,经常可以用到的: android:autoLink       设置是否当 文本为URL链接/email/电话号码/map时,文本显示为可点 ...

  6. 一道题DP

    Problem Description 小明明又被大威鱼抓住了,大威鱼把小明明关在地牢里,地牢由n * n 个房间组成,小明被困在地牢的最左上角的房间中,出口在最右下角,他想逃出这个诡异的地牢,但是他 ...

  7. Linux信号处理2

    引言 先看以下两个信号量: 13)SIGPIPE     当管道读端关闭,再往管道写东西,会发出SIGPIPE信号 17)SIGCHLD   子进程退出会向父进程发出SIGCHLD信号,系统默认处理是 ...

  8. Redis 常用数据结构及其控制命令整合

    Redis 键值支持5种基本结构,分别是字符串,列表,哈希,集合,有序集合.每一种数据结构都有对应的取值和设值命令,辅助命令,除此之外,还有一些全局命令,用来管理Redis存储的所有 键. 全局命令 ...

  9. 文件的基本管理和XFS文件系统备份恢复

    4.1 Linux系统目录结构和相对/绝对路径 4.1.1系统目录结构 在WIN系统中,查看文件先进入相应的盘符,然后进入文件目录 在WIN中,它是多根  c:\    d:\   e:\ Linux ...

  10. 使用IIS应用程序初始化来保持ASP&period;NET应用程序的活动

    https://weblog.west-wind.com/posts/2013/Oct/02/Use-IIS-Application-Initialization-for-keeping-ASPNET ...