系统的简单数据库操作1

  • 数据库模型
  • 数据库的数据操作包
  • Tables类
  • Dao数据库操作类


java中简单的数据库操作

作为一个在学习过程的学生,想写个博客记录简单自己的学习过程,都是一些简单基础的东西,希望写这些能理清自己的思路

数据库模型

首先先建立一个包,可以命名为model包,里面是表的数据模型类
如这里建立一个库存的model类

// An highlighted block
var foo = 'bar';
package dao.model;  

import java.io.Serializable;

public class TbKucun implements Serializable {
	private String id;// 商品编号
	private String spname;// 商品名称
	private String jc;// 商品简称
	private String cd;// 产地
	private String gg;// 商品规格
	private String bz;// 包装
	private String dw;// 商品计量单位
	private Double dj;// 单价
	private Integer kcsl;// 库存数量

	public TbKucun() {// 缺省构造函数
	}

	public TbKucun(String id) {// 最小构造函数(主键)
		this.id = id;
	}

	public TbKucun(String id, String spname, String jc, String cd, String gg, String bz, String dw, Double dj,Integer kcsl) {// 完整构造函数
		this.id = id;
		this.spname = spname;
		this.jc = jc;
		this.cd = cd;
		this.gg = gg;
		this.bz = bz;
		this.dw = dw;
		this.dj = dj;
		this.kcsl = kcsl;
	}
	
	// 使用Getters and Setters方法将库存信息类的私有属性封装起来
	public String getId() {
		return this.id;
	}

	public void setId(String id) {
		this.id = id;
	}

	public String getSpname() {
		return this.spname;
	}

	public void setSpname(String spname) {
		this.spname = spname;
	}

	public String getJc() {
		return this.jc;
	}

	public void setJc(String jc) {
		this.jc = jc;
	}

	public String getCd() {
		return this.cd;
	}

	public void setCd(String cd) {
		this.cd = cd;
	}

	public String getGg() {
		return this.gg;
	}

	public void setGg(String gg) {
		this.gg = gg;
	}

	public String getBz() {
		return this.bz;
	}

	public void setBz(String bz) {
		this.bz = bz;
	}

	public String getDw() {
		return this.dw;
	}

	public void setDw(String dw) {
		this.dw = dw;
	}

	public Double getDj() {
		return this.dj;
	}

	public void setDj(Double dj) {
		this.dj = dj;
	}

	public Integer getKcsl() {
		return this.kcsl;
	}

	public void setKcsl(Integer kcsl) {
		this.kcsl = kcsl;
	}

	public String toString() {
		return getSpname();
	}
}
  1. 表中的属性对应数据库表中的对应表的列;
  2. 创建构造方法
    有缺省构造方法,参数为主键的构造方法,完整的构造方法
    3.用getXXX和setXXX的方法将私有属性封装起来

数据库的数据操作包

有了数据模型,可以进行数据操作类
java的思想是从小到大,所以先建立表的列类
##Colums类

package dao;

public class Columns {
 private String name;// 列名
 private String type;// 字段类型
 private boolean isNull;// 是否可以为null
 private boolean isKey;// 是否是主键
 private boolean isIncrement;// 是否自增
 
 public Columns(){
 	super();
 }
 
 public Columns(String name,String type,boolean isNull,boolean isKey,boolean isIncrement){
 	this.name=name;
 	this.type=type;
 	this.isNull=isNull;
 	this.isKey=isKey;
 	this.isIncrement=isIncrement;
 }
 
 public String getName(){
 	return name;
 }
 public void setName(String name){
 	this.name=name;
 }
 public String getType(){
 	return type;
 }
 public void setType(String type){
 	this.type=type;
 }
 public boolean getisNull(){
 	return isNull;
 }
 public void setisNull(boolean isNull){
 	this.isNull=isNull;
 }
 public boolean getisKey(){
 	return isKey;
 }
 public void setisKey(boolean isKey){
 	this.isKey=isKey;
 }
 public boolean getisIncrement(){
 	return isIncrement;
 }
 public void setIncrement(boolean isIncrement){
 	this.isIncrement=isIncrement;
 }
 
 public String toString(){
 	return "Columns [name="+name+"type="+type+
 			"isNull="+isNull+"isKey="+isKey+
 			"isIncrement="+isIncrement;
 }
 
}

1.属性包含列名,字符类型 ,是否为空,是否为主键,是否自增
还可以增加其他约束性条件
2.构造函数
3.getXXX和setXXX方法将私有方法封装起来

Tables类

package com.lzw.dao;

import java.util.ArrayList;

public class Tables {
	private String name;
	private ArrayList<Columns> columns=new ArrayList<Columns>();
	
	public Tables(){
		super(); //?
	}
	public Tables(String name,ArrayList<Columns> columns){
		super();  //?
		this.name=name;
		this.columns=columns;
	}
	
	public String getName(){
		return name;
	}
	public void setname(String name){
		this.name=name;
	}
	public ArrayList<Columns> getcolumns(){
		return columns;
	}
	public void setcolumns(ArrayList<Columns> columns){
		this.columns=columns;
	}
	
}

1.表类的属性包含表名,和Columns的集合类,相当于一个数组,每个数组的一列为一个Columns类
2.构造方法
3.用getXXX和setXXX类将私有属性封装起来

Dao数据库操作类

有了Columns类和Tables类就可以进行数据库操作类了
实现数据库的备份,恢复,插入功能等

package com.lzw.dao;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.LinkedList;

import javax.swing.JOptionPane;

public class Dao {
	protected static String  dbClassName="com.mysql.jdbc.Driver";  //sql驱动
	protected static String dbUrl="jdbc:mysql://127.0.0.1:3306/db_jxcms";  //sql的url
	protected static String dbUser="root";  //用户名
	protected static String dbPwd="root";  //密码
	protected static String dbName="db_jxcms";   //数据库名
	protected static String second=null;  
	public static  Connection conn=null;   //数据库连接对象
		
	static{//静态初始化Dao类
		
		try {
			if(conn==null){
				Class.forName(dbClassName).newInstance();  //Class.forName()显式地加载JDBC驱动程序
				conn=DriverManager.getConnection(dbUrl, dbUser, dbPwd);  
				/*drivemanager 加载驱动程序类
	                                       建立连接
	             */
				}
		} catch (InstantiationException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IllegalAccessException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (ClassNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			JOptionPane.showMessageDialog(null, "请将MySQL的JDBC驱动包复制到lib文件夹中");
			System.exit(-1);
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
	}
		
		
		private Dao(){    //封闭构造方法,禁止创建dao类的实例对象
			
		}
		//下面包含数据库的备份,恢复,插入,删除,读取,修改功能
		//各种方法将在后续博客给出

}

目前在自学看Java书,用书为java从入门到精通,以上内容可参考此书,对于初学者帮助很大