一个实现单表增删查改的小程序.
下面代码用的是Customers表,有id(自动增长,主键),name,age,address字段
程序分为有 提供连接的ConnectionProvider类,用于保存记录的对象Customer类,产生界面的Viewer类,控制器Contral类
属性文件内容:文件名是db.conf
1.数据库
- #MySQL
- JDBC_DRIVER=com.mysql.jdbc.Driver
- URL=jdbc:mysql://localhost:3306/test
- USER=root
- PASSWORD=1234
2.提供连接的类 DAO
- package jdbc;
- import java.io.*;
- import java.sql.*;
- import java.util.*;
- public class
- private static Connection con = null;
- private static Properties ps = new
- static{
- try
- in = new FileInputStream("db.conf");
- in);
- catch
- e.printStackTrace();
- }
- }
- public static
- "JDBC_DRIVER");
- "URL");
- "USER");
- "PASSWORD");
- try
- "com.mysql.jdbc.Driver");
- new
- con = DriverManager.getConnection(URL,USER,PASSWORD);
- catch
- e.printStackTrace();
- }
- return
- }
- }
3.视图类 (表示层)
- package jdbc;
- import javax.swing.*;
- import java.awt.*;
- import java.awt.event.*;
- /**视图类,用来展示记录,和将信息反馈给控制器,并接受和显示控制器返回的结果*/
- public class
- private
- private
- private
- private
- private
- private
- private
- private
- private
- public
- buildViewer();
- new
- customer = contral.first();
- show(customer,contral.getSize());
- }
- public void
- new
- new JLabel(" 第0条记录,一共有0条记录");
- jf.add(topLabel,BorderLayout.NORTH);
- new JPanel(new
- new JLabel("id");
- new JLabel("name");
- new JLabel("age");
- new JLabel("address");
- new
- new
- new
- new
- jpCenter.add(idLabel);
- jpCenter.add(idField);
- jpCenter.add(nameLabel);
- jpCenter.add(nameField);
- jpCenter.add(ageLabel);
- jpCenter.add(ageField);
- jpCenter.add(addressLabel);
- jpCenter.add(addressField);
- jf.add(jpCenter);
- new
- new JButton("first");
- new JButton("previous");
- new JButton("next");
- new JButton("last");
- new JButton("insert");
- new JButton("update");
- new JButton("dalete");
- new JButton("refresh");
- this);
- this);
- this);
- this);
- this);
- this);
- this);
- this);
- jpSouth.add(first);
- jpSouth.add(previous);
- jpSouth.add(next);
- jpSouth.add(last);
- jpSouth.add(insert);
- jpSouth.add(update);
- jpSouth.add(dalete);
- jpSouth.add(refresh);
- jf.add(jpSouth,BorderLayout.SOUTH);
- jf.setSize(600,200);
- jf.setLocation(200, 200);
- true);
- jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- }
- /**展示记录*/
- public void
- "");
- nameField.setText(customer.getName());
- "");
- addressField.setText(customer.getAddress());
- " 第"
- ":")[0]
- "条记录,一共有"+size.split(":")[1]+"条记录");
- }
- /**事件监听*/
- public void
- String comm = e.getActionCommand();
- if("first".equals(comm)){
- customer = contral.first();
- show(customer,contral.getSize());
- else if("previous".equals(comm)){
- customer = contral.previous();
- show(customer,contral.getSize());
- else if("next".equals(comm)){
- customer = contral.next();
- show(customer,contral.getSize());
- else if("last".equals(comm)){
- customer = contral.last();
- show(customer,contral.getSize());
- else if("insert".equals(comm)){
- String name = nameField.getText();
- int
- String address = addressField.getText();
- customer = contral.insert(name,age,address);
- show(customer,contral.getSize());
- else if("update".equals(comm)){
- String name = nameField.getText();
- int
- String address = addressField.getText();
- contral.update(name,age,address);
- else if("dalete".equals(comm)){
- customer = contral.dalete();
- show(customer,contral.getSize());
- else if("refresh".equals(comm)){
- customer = contral.refresh();
- show(customer,contral.getSize());
- }
- }
- public static void
- new
- }
- }
4.控制器类(逻辑层)
- package jdbc;
- import java.sql.*;
- import java.util.*;
- public class
- private int
- private Connection con = null;
- private Statement stmt = null;
- private ResultSet rs = null;
- private
- /**构造,产生对象结果集合*/
- public
- buildCustomersList();
- }
- /**执行查询语句,将结果集转换成对象集*/
- private void
- new
- con = ConnectionProvider.getConnection();
- try
- stmt = con.createStatement();
- "select * from customers");
- new
- while(rs.next()){
- int
- String name = toGB(rs.getString(2));
- int
- String address = toGB(rs.getString(4));
- new
- customers.add(customer);
- }
- catch
- e.printStackTrace();
- finally{
- closeConnection(con);
- closeStatement(stmt);
- closeResultSet(rs);
- }
- }
- /**显示第一个元素*/
- public
- cur = 0;
- return customers.get(cur);
- }
- /**显示前一个元素*/
- public
- if(cur>0)
- cur--;
- return customers.get(cur);
- }
- /**显示下一个*/
- public
- if(cur<customers.size()-1)
- cur++;
- return customers.get(cur);
- }
- /**显示最后一个*/
- public
- cur = customers.size()-1;
- return customers.get(cur);
- }
- /**插入记录*/
- public Customer insert(String name,int
- Customer customer;
- "insert into customers (name,age,address)value("
- "'" + toISO(name) + "'" + ","
- ","
- "'" + toISO(address) + "'" + ")";
- boolean isOk = exe(sql);
- try{
- if(isOk){
- con = ConnectionProvider.getConnection();
- stmt = con.createStatement();
- "select id from customers where name="
- "'" + toISO(name) + "'";
- rs = stmt.executeQuery(sql);
- rs.next();
- new
- customers.add(cur,customer);
- return
- else{
- return customers.get(cur);
- }
- catch(Exception e){
- e.printStackTrace();
- return customers.get(cur);
- finally{
- closeConnection(con);
- closeStatement(stmt);
- }
- }
- /**记录更新*/
- public void update(String name,int
- get(cur);
- customer.setName(name);
- customer.setAge(age);
- customer.setAddress(address);
- "update customers set name=" + "'" + toISO(name) + "'" + ","
- "age=" + age + ","
- "address=" +"'" + toISO(address) + "'"
- "where id="
- exe(sql);
- }
- /**删除记录*/
- public
- get(cur);
- "delete from customers where id="
- exe(sql);
- customers.remove(cur);
- if(cur<customers.size()-1){
- get(cur);
- else{
- cur = 0;
- get(cur);
- }
- return
- }
- /**刷新结果集合*/
- public
- buildCustomersList();
- return
- }
- /**用于执行SQL语句*/
- private
- con = ConnectionProvider.getConnection();
- try
- stmt = con.createStatement();
- stmt.execute(sql);
- return true;
- catch
- e.printStackTrace();
- return false;
- finally{
- closeConnection(con);
- closeStatement(stmt);
- closeResultSet(rs);
- }
- }
- /**获取总记录数和当前记录数的字符串表示*/
- public
- return (cur+1) + ":"
- }
- /**把gb2312转化成ISO-8859-1*/
- private
- try
- return str = new String(str.getBytes("GB2312"),"ISO-8859-1");
- catch
- return
- }
- /**把ISO-8859-1转化成gb2312*/
- private
- try
- return str = new String(str.getBytes("ISO-8859-1"),"GB2312");
- catch
- return
- }
- /**关闭连接*/
- private void
- try{if(con!=null)con.close();}catch(Exception e){e.printStackTrace();}
- }
- /**关闭语句*/
- private void
- try{if(stmt!=null)stmt.close();}catch(Exception e){e.printStackTrace();}
- }
- /**关闭结果集*/
- private void
- try{if(rs!=null)rs.close();}catch(Exception e){e.printStackTrace();}
- }
- }
5.POJO 基本的bean类
- package jdbc;
- public class
- private int
- private
- private int
- private
- public Customer(int id,String name,int
- this.id = id;
- this.name = name;
- this.age = age;
- this.address = address;
- }
- public int
- return
- }
- public void setId(int
- this.id = id;
- }
- public
- return
- }
- public void
- this.name = name;
- }
- public int
- return
- }
- public void setAge(int
- this.age = age;
- }
- public
- return
- }
- public void
- this.address = address;
- }
- }