Java的练习4

今天练习来到了读者信息管理模块,这里是代码有点多了,明天最好可以完成。

开始都是一样的,练习jdbc连接数据库的创建。今天是熟练了好多。

package 读者信息管理;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class DBUtil {
	private static String driverName="com.mysql.jdbc.Driver";
	private static String URL="jdbc:mysql://localhost:3306/amis";
	private static String name="root";
	private static String password="y888888";
	
	public static Connection getConncetion() {
		Connection conn=null;
		try {
			Class.forName(driverName);
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
		
		try {
			conn=DriverManager.getConnection(URL, name, password);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		
		return conn;
	}
	
	public static void closeCon(Connection con) {
		if (con!=null){
			try {
				con.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void closeSm(Statement sm) {
		if (sm!=null){
			try {
				sm.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
	
	public static void closeRs(ResultSet rs) {
		if (rs!=null){
			try {
				rs.close();
			} catch (SQLException e) {
				e.printStackTrace();
			}
		}
	}
}
这里为什么都是static呢?不论定义四个属性还是函数功能,都是static。

1、JDBC中的应用

熟悉JDBC的读者应该知道,java中有一个DriverManager类,用于管理各种数据库驱动程序、建立新的数据库连接。DriverManager类包含一些列Drivers类,这些Drivers类必须通过调用DriverManager的registerDriver()方法来对自己进行注册,那么注册是什么时候发生的呢?下面会给出答案:

所有Drivers类都必须包含有一个静态方法,利用这个静态方法可以创建该类的实例,然后在加载该实例时向DriverManage类进行注册。我们经常用Class.forName()对驱动程序进行加载,那么注册就发生在这条语句的执行过程中,前面说的Drivers的静态方法是放在static{}中的,当对驱动程序进行加载的时候,会执行该static{},便完成了注册

摘自http://blog.csdn.net/newjerryj/article/details/8650268


下来对象类的定义如今有了eclipse里面的技巧,很easy就可以创建好。

package 读者信息管理;

public class Readers {
	private String reader_id;
	private String reader_name;
	private String reader_sex;
	private String reader_special;
	private String reader_class;
	private String reader_tel;
	private String reader_begin;
	private boolean reader_state;
	private int dept_id;
	private int reader_typeid;
	public String getReader_id() {
		return reader_id;
	}
	public void setReader_id(String reader_id) {
		this.reader_id = reader_id;
	}
	public String getReader_name() {
		return reader_name;
	}
	public void setReader_name(String reader_name) {
		this.reader_name = reader_name;
	}
	public String getReader_sex() {
		return reader_sex;
	}
	public void setReader_sex(String reader_sex) {
		this.reader_sex = reader_sex;
	}
	public String getReader_special() {
		return reader_special;
	}
	public void setReader_special(String reader_special) {
		this.reader_special = reader_special;
	}
	public String getReader_class() {
		return reader_class;
	}
	public void setReader_class(String reader_class) {
		this.reader_class = reader_class;
	}
	public String getReader_tel() {
		return reader_tel;
	}
	public void setReader_tel(String reader_tel) {
		this.reader_tel = reader_tel;
	}
	public String getReader_begin() {
		return reader_begin;
	}
	public void setReader_begin(String reader_begin) {
		this.reader_begin = reader_begin;
	}
	public boolean isReader_state() {
		return reader_state;
	}
	public void setReader_state(boolean reader_state) {
		this.reader_state = reader_state;
	}
	public int getDept_id() {
		return dept_id;
	}
	public void setDept_id(int dept_id) {
		this.dept_id = dept_id;
	}
	public int getReader_typeid() {
		return reader_typeid;
	}
	public void setReader_typeid(int reader_typeid) {
		this.reader_typeid = reader_typeid;
	}
	
	
	
	
}
而且真是挺智能的,

public boolean isReader_state() {
return reader_state;
}
真值判断这函数命,智能不?


下面来就是依旧对数据库信息进行具体的操作

package 读者信息管理;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;

import javax.swing.JOptionPane;

public class ReaderManage {
	JOptionPane jop=new JOptionPane();
	
	public void addReader(Readers reader) {
		int row=0;
		Connection con=DBUtil.getConncetion();
		try {
			String sql="insert into reader(reader_id,reader_name,reader_typeid,reader_special,reader_class,reader_tel) values ('"+reader.getReader_id()+"','"+reader.getReader_name()+"','"+reader.getReader_typeid()+"','"+reader.getReader_special()+"','"+reader.getReader_class()+"','"+reader.getReader_tel()+"')";
			Statement sm=con.createStatement();
			row=sm.executeUpdate(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				con.close();
			} catch (SQLException e2) {
				e2.printStackTrace();
			}
		}
		if (row>0){
			JOptionPane.showMessageDialog(jop, "添加成功");
		}
		else {
			JOptionPane.showMessageDialog(jop, "添加失败");
		}
	}
	
	public void updateReader(String i,String n,String s,String c,String t) {
		int row=0;
		Connection con=DBUtil.getConncetion();
		try {
			String sql="update reader set reader_name='"+n+"',reader_special='"+s+"',read_class='"+c+"',reader_tel='"+t+"' where reader_id='"+i+"'";
			Statement sm=con.createStatement();
			row=sm.executeUpdate(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		}finally {
			try {
				con.close();
			} catch (SQLException e2) {
				e2.printStackTrace();
			}
		}
		if (row>0)
			JOptionPane.showMessageDialog(jop, "修改成功");
		else
			JOptionPane.showMessageDialog(jop, "修改失败");
	}
	
	//根据传过来的ID返回查询结果
	public List idSeekReader(String ID) {
		List list=new ArrayList();
		Readers reader;
		Connection con=DBUtil.getConncetion();
		try {
			String sql;
			if (ID.equals(""))
				sql="select * from reader";
			else
				sql="select * from reader where reader_id='"+ID+"'";
			Statement sm=con.createStatement();
			ResultSet rs=sm.executeQuery(sql);
			while (rs.next()){
				reader=new Readers();
				reader.setReader_id(rs.getString("reader_id"));
				reader.setReader_name(rs.getString("reader_name"));
				reader.setReader_special(rs.getString("reader_special"));
				reader.setReader_class(rs.getString("reader_class"));
				reader.setReader_tel(rs.getString("reader_tel"));
				
				list.add(reader);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				con.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
		return list;
	}
	
	public void deleteReader(String id) {
		int row=0;
		Connection con=DBUtil.getConncetion();
		try {
			Statement sm=con.createStatement();
			String sql="delete reader where reader_id='"+id+"'";
			row=sm.executeUpdate(sql);
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				con.close();
			} catch (SQLException e2) {
				e2.printStackTrace();
			}
		}
		if (row>0)
			JOptionPane.showMessageDialog(jop, "删除成功");
		else
			JOptionPane.showMessageDialog(jop, "删除失败");
	}
	
	public boolean isExist(String id) {
		Connection con=DBUtil.getConncetion();
		try {
			Statement sm=con.createStatement();
			String sql="select reader_id from reader where reader_id='"+id+"'";
			ResultSet rs=sm.executeQuery(sql);
			if (rs.next())
				return true;
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				con.close();
			} catch (SQLException e2) {
				e2.printStackTrace();
			}
		}
		return false;
	}
	
	//查询读者类型
	public String[] seekType() {
		List<String> list=new ArrayList<String>();
		Connection con=DBUtil.getConncetion();
		try {
			String sql="select * from readertype";
			Statement sm=con.createStatement();
			ResultSet rs=sm.executeQuery(sql);
			while (rs.next()){
				list.add(rs.getString("reader_type"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				con.close();
			} catch (SQLException e2) {
				e2.printStackTrace();
			}
		}
		
		String[] item=new String[list.size()];
		for (int i=0;i<list.size();i++)
			item[i]=list.get(i);
		return item;
	}
	
	//查询读者类型编号
	public int seekTypeId(String s) {
		int i=0;
		Connection con=DBUtil.getConncetion();
		try {
			String sql="select reader_typeid from readertype where reader_type='"+s+"'";
			Statement sm=con.createStatement();
			ResultSet rs=sm.executeQuery(sql);
			while (rs.next()){
				i=rs.getInt("reader_typeid");
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			try {
				con.close();
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
		return i;
	}
}
添加里面,sql语句那么长,很烦哟。

这个查询读者类型函数功能seekType(),很好的诠释了哪里用List,哪里用数组。

在不知道具体长度的情况下,先用List存放,最后再放入到数组里面。


最后就是主面板,暂时的主面板,因为四个具体的增删改查都没有写,是四个面板呢。

package 读者信息管理;

import java.awt.Color;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JPanel;

public class ReaderJPanel extends JPanel implements ActionListener{
	JPanel jpLeft;
	JButton add,update,delete,seek;
	public static AddReaderJPanel arj=new AddReaderJPanel();
	public static UpdateReaderJPanel urj=new UpdateReaderJPanel();
	public static DeleteReaderJPanel drj=new DeleteReaderJPanel();
	public static SeekReaderJPanel srj=new SeekReaderJPanel();
	
	public ReaderJPanel(){
		arj.setVisible(false);
		urj.setVisible(false);
		drj.setVisible(false);
		srj.setVisible(false);

		jpLeft=new JPanel();
		add=new JButton("添加读者");
		add.addActionListener(this);
		update=new JButton("修改读者");
		update.addActionListener(this);
		delete=new JButton("删除读者");
		delete.addActionListener(this);
		seek=new JButton("查询读者");
		seek.addActionListener(this);
		
		jpLeft.add(Box.createHorizontalStrut(10));
		jpLeft.add(add);
		jpLeft.add(Box.createHorizontalStrut(10));
		jpLeft.add(Box.createHorizontalStrut(10));
		jpLeft.add(Box.createHorizontalStrut(10));
		jpLeft.add(update);
		jpLeft.add(Box.createHorizontalStrut(10));
		jpLeft.add(Box.createHorizontalStrut(10));
		jpLeft.add(Box.createHorizontalStrut(10));
		jpLeft.add(seek);
		jpLeft.add(Box.createHorizontalStrut(10));
		jpLeft.add(Box.createHorizontalStrut(10));
		jpLeft.add(Box.createHorizontalStrut(10));
		jpLeft.add(delete);
		
		jpLeft.setBounds(15, 15, 100, 370);
		jpLeft.setBackground(Color.white);
		add(jpLeft);
		
		arj.setBounds(130, 15, 685, 370);
		add(arj);
		urj.setBounds(130, 15, 685, 370);
		add(urj);
		drj.setBounds(130, 15, 685, 370);
		add(drj);
		srj.setBounds(130, 15, 685, 370);
		add(srj);
	}
	
	
	public void actionPerformed(ActionEvent e) {
		
	}

}
唯一还有疑惑的又还是这个box我的天,这里书上写的到底是几个意思呢?Hor是横向的,但是要是改成Ver垂直的,也没什么区别啊。
明天继续。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值