java把涉及的jdbc连接参数通过文件读取的方式获取(db.properties)

项目结构
java把涉及的jdbc连接参数通过文件读取的方式获取(db.properties)

db.properties文件里的内容
driver=oracle.jdbc.OracleDriver
url=jdbc:oracle:thin:@localhost:1521:xe
user=system
password=1234

DBUtils 工具类
package cn.lyc.util;

import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;

public class DBUtils {

private static String DRIVER;
private static String URL;
private static String USER;
private static String PASSWORD;
private static Properties props = new Properties();

/**
 * 静态加载资源
 */
static {
	InputStream is = DBUtils.class.getClassLoader().getResourceAsStream("db.properties");
	try {
		props.load(is);
		DRIVER = props.getProperty("driver");
		URL = props.getProperty("url");
		USER = props.getProperty("user");
		PASSWORD = props.getProperty("password");
		Class.forName(DRIVER);
	} catch (IOException e) {
		e.printStackTrace();
		System.out.println("文件读取错误,请查看 DBUtil 表");
	} catch (ClassNotFoundException e) {
		e.printStackTrace();
		System.out.println("没有找到文件哦,请查看 DRIVER 字符串");
	}
}

/**
 * 创建连接对象
 * @return
 */
public static Connection getConnection(){
	Connection cn = null;
	try {
		cn = DriverManager.getConnection(URL,USER,PASSWORD);
	} catch (SQLException e) {
		e.printStackTrace();
		System.out.println("数据库,连接错误!请查看 DBUtil!");
	}
	return cn;
}

/**
 * 释放资源
 * @param cn
 * @param st
 * @param rs
 */
public static void close (Connection cn, Statement st , ResultSet rs){
	try {
		if(cn!=null && !cn.isClosed()){
			cn.close();
		}
		if(st!=null && !cn.isClosed()){
			st.close();
		}
		if(rs!=null && !rs.isClosed()){
			rs.close();
		}
	} catch (SQLException e) {
		e.printStackTrace();
	}
}

}

一个数据库的一张表对应的实体(Student)
package cn.lyc.entity;

import java.util.Date;

/**
*
*
create table student (
s_no number primary key,
s_name varchar2(10),
s_sex varchar2(2) check(s_sex in(‘男’,‘女’)),
s_birthday date,
s_score number(5,1),
s_addf number(5,1)
);
select * from student;

  • @author JLB

*/
public class Student {

private int s_no;
private String s_name;
private String s_sex;
private Date s_birthday;
private double s_score;
private double s_addf;
public int getS_no() {
	return s_no;
}
public void setS_no(int s_no) {
	this.s_no = s_no;
}
public String getS_name() {
	return s_name;
}
public void setS_name(String s_name) {
	this.s_name = s_name;
}
public String getS_sex() {
	return s_sex;
}
public void setS_sex(String s_sex) {
	this.s_sex = s_sex;
}
public Date getS_birthday() {
	return s_birthday;
}
public void setS_birthday(Date s_birthday) {
	this.s_birthday = s_birthday;
}
public double getS_score() {
	return s_score;
}
public void setS_score(double s_score) {
	this.s_score = s_score;
}
public double getS_addf() {
	return s_addf;
}
public void setS_addf(double s_addf) {
	this.s_addf = s_addf;
}
@Override
public String toString() {
	return "Student [s_no=" + s_no + ", s_name=" + s_name + ", s_sex=" + s_sex + ", s_birthday=" + s_birthday
			+ ", s_score=" + s_score + ", s_addf=" + s_addf + "]";
}

}

package cn.lyc.jdbc;

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 cn.lyc.entity.Student;
import cn.lyc.util.DBUtils;

java与数据库表数据实现数据交互(实现类)
/**
*
1.建立oracle数据库表
2.创建一个Student类
3.编写一个DBUtil工具类,从配置文件db.properties中读取相关参数,提供获取连接的方法和关闭连接的方法
4.编写一个StudentDao类,实现对Student表的删除、添加、修改操作,并实现查询所有student和根据id查询student的功能
s_no number primary key,
s_name varchar2(10),
s_sex varchar2(2) check(s_sex in(‘男’,‘女’)),
s_birthday date,
s_score number(5,1),
s_addf number(5,1)

  • @author JLB

*/
public class StudentDao {

/**
 * 新增学生
 * @param student
 */
public void insert(Student student){
	Connection cn =null;
	Statement st = null;
	cn = DBUtils.getConnection();/*
	Date date = new Date ();
	SimpleDateFormat sdf = new SimpleDateFormat("YYYY-MM-DD HH:mm:SS");*/
	//String strDate = sdf.format(date);
	String sql = "insert into student values("+student.getS_no()+",'"+student.getS_name()+"','"+student.getS_sex()+"',to_date('"+student.getS_birthday().toString()+"','YYYY-MM-DD'),"+student.getS_score()+","+student.getS_addf()+")";
	System.out.println(sql);
	try {
		st = cn.createStatement();
		st.executeUpdate(sql);
		System.out.println("修改成功!!");
	} catch (SQLException e) {
		e.printStackTrace();
	}finally{
		DBUtils.close(cn, st, null);
	}
}

/**
 * 修改学生
 * @param student
 */
public void update(Student student){
	Connection cn =null;
	Statement st = null;
	cn = DBUtils.getConnection();
	String sql = "update student set s_name='" + student.getS_name() +"' where s_no="+ student.getS_no();
	try {
		st = cn.createStatement();
		st.executeUpdate(sql);
		System.out.println("修改成功!!");
	} catch (SQLException e) {
		e.printStackTrace();
	}finally{
		DBUtils.close(cn, st, null);
	}
}

/**
 * 删除学生
 * @param student
 */
public void delete(int id){
	Connection cn =null;
	Statement st = null;
	cn = DBUtils.getConnection();
	String sql = "delete from student where s_no=" + id;
	try {
		st = cn.createStatement();
		st.executeUpdate(sql);
		System.out.println("删除成功!!");
	} catch (SQLException e) {
		e.printStackTrace();
	}finally{
		DBUtils.close(cn, st, null);
	}
}
/**
 * 查询所有学生
 * @return
 */
public List<Student> selectAll (){
	List<Student> listStudent = new ArrayList<Student>();
	Connection cn = null;
	Statement st = null;
	ResultSet rs = null;
	cn = DBUtils.getConnection();
	try {
		st = cn.createStatement();
		rs = st.executeQuery("select * from student");
		while(rs.next()){
			Student student = new Student();
			student.setS_no(rs.getInt(1));
			student.setS_name(rs.getString(2));
			student.setS_sex(rs.getString(3));
			student.setS_birthday(rs.getDate(4));
			student.setS_score(rs.getDouble(5));
			student.setS_addf(rs.getDouble(6));
			listStudent.add(student);
		}
	} catch (SQLException e) {
		e.printStackTrace();
	}finally{
		DBUtils.close(cn, st, rs);
	}
	
	return listStudent;
}

/**
 * 根据id查询学生
 * @return
 */
public Student selectById (int id){
	Connection cn = null;
	Statement st = null;
	ResultSet rs = null;
	cn = DBUtils.getConnection();
	try {
		st = cn.createStatement();
		rs = st.executeQuery("select * from student where s_no = " + id);
		if(rs.next()){
			Student student = new Student();
			student.setS_no(rs.getInt(1));
			student.setS_name(rs.getString(2));
			student.setS_sex(rs.getString(3));
			student.setS_birthday(rs.getDate(4));
			student.setS_score(rs.getDouble(5));
			student.setS_addf(rs.getDouble(6));
			return student ;
		}
	} catch (SQLException e) {
		e.printStackTrace();
	}finally{
		DBUtils.close(cn, st, rs);
	}
	return null;
}

}

最后就可以来一个测试类,测试以下实现如何了!哈哈哈!!

package cn.lyc.test;

import java.sql.Date;
import java.util.List;

import org.junit.Test;

import cn.lyc.entity.Student;
import cn.lyc.jdbc.StudentDao;

public class StudentDaoTest {

StudentDao studentDao = new StudentDao();
@Test
public void testInsert() {
	Student student = new Student();
	student.setS_no(1001);
	student.setS_name("小米");
	student.setS_sex("女");
	student.setS_score(100.1);
	student.setS_birthday(new Date(new java.util.Date().getTime()));
	student.setS_addf(11.0);
	studentDao.insert(student);
}

@Test
public void testUpdate() {
	Student student = new Student();
	student.setS_name("小涂");
	student.setS_no(1001);
	studentDao.update(student);
}

@Test
public void testDelete() {
	studentDao.delete(1001);
}

@Test
public void testSelectAll() {
	List<Student> ls = studentDao.selectAll();
	if(ls==null){
		System.out.println("该表中没有数据!");
	}
	System.out.println(ls);
}

@Test
public void testSelectById() {
	Student stu = studentDao.selectById(1001);
	if(stu==null){
		System.out.println("该数据不存在!");
	}
	System.out.println(stu);
}

}