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);
}
}