Java实例---简单的数据库操作

Posted 小a玖拾柒

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java实例---简单的数据库操作相关的知识,希望对你有一定的参考价值。

源码分析

DAOFactory.java

1 package cn.ftl.mysql ;
2 public class DAOFactory {
3     public static IEmpDAO getIEmpDAOInstance() throws Exception{
4         return new EmpDAOProxy() ;
5     }
6 }
View Code

DatabaseConnection.java

 1 package cn.ftl.mysql ;
 2 import java.sql.Connection ;
 3 import java.sql.DriverManager ;
 4 public class DatabaseConnection {
 5     public static final String DBDRIVER= "com.mysql.jdbc.Driver";
 6     public static final String DBURL= "jdbc:mysql://localhost:3306/RUNOOB";
 7     public static final String DBUSER= "test";
 8     public static final String DBPASSWORD= "Changeme_123";
 9     
10     private Connection conn ;
11     public DatabaseConnection() throws Exception {
12         Class.forName(DBDRIVER) ;
13         this.conn = DriverManager.getConnection(DBURL,DBUSER,DBPASSWORD) ;
14     }
15     public Connection getConnection(){
16         return this.conn ;
17     }
18     public void close() throws Exception {
19         if(this.conn != null){
20             try{
21                 this.conn.close() ;
22             }catch(Exception e){
23                 throw e ;
24             }
25         }
26     }
27 }
View Code

Emp.java

 1 package cn.ftl.mysql ;
 2 import java.util.Date ;
 3 public class Emp {
 4     private int empno ;
 5     private String ename ;
 6     private String job ;
 7     private Date hiredate ;
 8     private float sal ;
 9     public void setEmpno(int empno){
10         this.empno = empno ;
11     }
12     public void setEname(String ename){
13         this.ename = ename ;
14     }
15     public void setJob(String job){
16         this.job = job ;
17     }
18     public void setHiredate(Date hiredate){
19         this.hiredate = hiredate ;
20     }
21     public void setSal(float sal){
22         this.sal = sal ;
23     }
24     public int getEmpno(){
25         return this.empno ;
26     }
27     public String getEname(){
28         return this.ename ;
29     }
30     public String getJob(){
31         return this.job ;
32     }
33     public Date getHiredate(){
34         return this.hiredate ;
35     }
36     public float getSal(){
37         return this.sal ;
38     }
39 }
View Code

EmpDAOImpl.java

 1 package cn.ftl.mysql;
 2 
 3 import java.util.* ;
 4 import java.sql.* ;
 5 
 6 public class EmpDAOImpl implements IEmpDAO {
 7     private Connection conn = null ;
 8     private PreparedStatement pstmt = null ;
 9     public EmpDAOImpl(Connection conn){
10         this.conn = conn ;
11     }
12     public boolean doCreate(Emp emp) throws Exception{
13         boolean flag = false ;
14         String sql = "INSERT INTO emp(empno,ename,job,hiredate,sal) VALUES (?,?,?,?,?)" ;
15         this.pstmt = this.conn.prepareStatement(sql) ;
16         this.pstmt.setInt(1,emp.getEmpno()) ;
17         this.pstmt.setString(2,emp.getEname()) ;
18         this.pstmt.setString(3,emp.getJob()) ;
19         this.pstmt.setDate(4,new java.sql.Date(emp.getHiredate().getTime())) ;
20         this.pstmt.setFloat(5,emp.getSal()) ;
21         if(this.pstmt.executeUpdate() > 0){
22             flag = true ;
23         }
24         this.pstmt.close() ;
25         return flag ;
26     }
27     public List<Emp> findAll(String keyWord) throws Exception{
28         List<Emp> all = new ArrayList<Emp>() ;
29         String sql = "SELECT empno,ename,job,hiredate,sal FROM emp WHERE ename LIKE ? OR job LIKE ?" ;
30         this.pstmt = this.conn.prepareStatement(sql) ;
31         this.pstmt.setString(1,"%"+keyWord+"%") ;
32         this.pstmt.setString(2,"%"+keyWord+"%") ;
33         ResultSet rs = this.pstmt.executeQuery() ;
34         Emp emp = null ;
35         while(rs.next()){
36             emp = new Emp() ;
37             emp.setEmpno(rs.getInt(1)) ;
38             emp.setEname(rs.getString(2)) ;
39             emp.setJob(rs.getString(3)) ;
40             emp.setHiredate(rs.getDate(4)) ;
41             emp.setSal(rs.getFloat(5)) ;
42             all.add(emp) ;
43         }
44         this.pstmt.close() ;
45         return all ;
46     }
47     public Emp findById(int empno) throws Exception{
48         Emp emp = null ;
49         String sql = "SELECT empno,ename,job,hiredate,sal FROM emp WHERE empno=?" ;
50         this.pstmt = this.conn.prepareStatement(sql) ;
51         this.pstmt.setInt(1,empno) ;
52         ResultSet rs = this.pstmt.executeQuery() ;
53         if(rs.next()){
54             emp = new Emp() ;
55             emp.setEmpno(rs.getInt(1)) ;
56             emp.setEname(rs.getString(2)) ;
57             emp.setJob(rs.getString(3)) ;
58             emp.setHiredate(rs.getDate(4)) ;
59             emp.setSal(rs.getFloat(5)) ;
60         }
61         this.pstmt.close() ;
62         return emp ;
63     }
64 }
View Code

EmpDAOProxy.java

 1 package cn.ftl.mysql;
 2 
 3 import java.util.* ;
 4 import java.sql.* ;
 5 
 6 public class EmpDAOProxy implements IEmpDAO {
 7     private DatabaseConnection dbc = null ;
 8     private IEmpDAO dao = null ;
 9     public EmpDAOProxy() throws Exception {
10         this.dbc = new DatabaseConnection() ;
11         this.dao = new EmpDAOImpl(this.dbc.getConnection()) ;
12     }
13     public boolean doCreate(Emp emp) throws Exception{
14         boolean flag = false ;
15         try{
16             if(this.dao.findById(emp.getEmpno()) == null){
17                 flag = this.dao.doCreate(emp) ;
18             }
19         }catch(Exception e){
20             throw e ;
21         }finally{
22             this.dbc.close() ;
23         }
24         return flag ;
25     }
26     public List<Emp> findAll(String keyWord) throws Exception{
27         List<Emp> all = null ;
28         try{
29             all = this.dao.findAll(keyWord) ;
30         }catch(Exception e){
31             throw e ;
32         }finally{
33             this.dbc.close() ;
34         }
35         return all ;
36     }
37     public Emp findById(int empno) throws Exception{
38         Emp emp = null ;
39         try{
40             emp = this.dao.findById(empno) ;
41         }catch(Exception e){
42             throw e ;
43         }finally{
44             this.dbc.close() ;
45         }
46         return emp ;
47     }
48 }
View Code

IEmpDAO.java

1 package cn.ftl.mysql;
2 import java.util.* ;
3 public interface IEmpDAO {
4     public boolean doCreate(Emp emp) throws Exception ;
5     public List<Emp> findAll(String keyWord) throws Exception ;
6     public Emp findById(int empno) throws Exception ;
7 }
View Code

TestDAOInsert.java

 1 package cn.ftl.mysql;
 2 public class TestDAOInsert{
 3     public static void main(String args[]) throws Exception{
 4         Emp emp = null ;
 5         for(int x=0;x<5;x++){
 6             emp = new Emp() ;
 7             emp.setEmpno(101 + x) ;
 8             emp.setEname("FTL - " + x) ;
 9             emp.setJob("JC - " + x) ;
10             emp.setHiredate(new java.util.Date()) ;
11             emp.setSal(5 * x) ;
12             DAOFactory.getIEmpDAOInstance().doCreate(emp) ;
13         }
14     }
15 }
View Code

TestDAOSelect.java

 1 package cn.ftl.mysql;
 2 import java.util.* ;
 3 public class TestDAOSelect{
 4     public static void main(String args[]) throws Exception{
 5         List<Emp> all = DAOFactory.getIEmpDAOInstance().findAll("") ;
 6         Iterator<Emp> iter = all.iterator() ;
 7         while(iter.hasNext()){
 8             Emp emp = iter.next() ;
 9             System.out.println(emp.getEmpno() + "、" + emp.getEname() + " --> " + emp.getJob()) ;
10         }
11     }
12 }
View Code

 

源码下载

点击下载

 

【更多参考】

Java学习---连接数据库操作

数据库建模工具 PD的使用

Linu下的Mysql学习详解_【all】

以上是关于Java实例---简单的数据库操作的主要内容,如果未能解决你的问题,请参考以下文章

Android - 试图实例化一个不是片段的类

java 代码片段

java 简单的代码片段,展示如何将javaagent附加到运行JVM进程

Java操作Redis的简单实例

Java实例---简单的数据库操作

Java简单数据库操作