//DBUtil.java
package common;
import java.sql.*;
public class DBUtil {
// 获得连接对象
public static Connection getConnection() throws ClassNotFoundException,
SQLException {
// 选取驱动程序
Class.forName("oracle.jdbc.driver.OracleDriver");
// 创建连接对象
Connection conn = DriverManager.getConnection(
"jdbc:oracle:thin:@F2-j0806:1521:ORACLE", "neu", "oracle");
return conn;
}
// 开始事务
public static void startTrans(Connection conn) throws SQLException {
conn.setAutoCommit(false);
}
// 提交事务
public static void endTrans(Connection conn) throws SQLException {
conn.commit();
}
// 回滚事务
public static void rollbackTrans(Connection conn) throws SQLException {
conn.rollback();
}
// 清除资源
public static void clear(Connection conn, PreparedStatement ps)
throws SQLException {
if (ps != null) {
ps.close();
}
if (conn != null) {
conn.close();
}
}
public static void clear(Connection conn, PreparedStatement ps, ResultSet rs)
throws SQLException {
if(rs!=null){
rs.close();
}
clear(conn,ps);
}
}
//StudentValue.java
package value;
public class StudentValue {
private String sno;
private String sname;
private String age;
private String birthday;
public String getSno() {
return sno;
}
public void setSno(String sno) {
this.sno = sno;
}
public String getSname() {
return sname;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
}
//StudentDao.java
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import value.StudentValue;
import common.DBUtil;
public class StudentDao {
public List<StudentValue> getAllStudentInfo(){
Connection conn=null;
PreparedStatement ps=null;
ResultSet rs=null;
try {
conn=DBUtil.getConnection();
String sql="select sno,sname,age,to_char(birthday,'yyyy-mm-dd') bday from student";
ps=conn.prepareStatement(sql);
rs=ps.executeQuery();
//创建集合对象
List<StudentValue> elist=new ArrayList<StudentValue>();
//把结果集中的数据转存到集合中
//把结果集中的一条记录转存为一个对象,之后把该对象放入集合中
while(rs.next()){
StudentValue value=new StudentValue();
value.setSno(rs.getString("sno"));
value.setSname(rs.getString("sname"));
value.setAge(rs.getString("age"));
value.setBirthday(rs.getString("bday"));
//补上其他字段的转换
elist.add(value);
}
return elist;
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public int deleteStudentBySno(String sno){
Connection conn=null;
PreparedStatement ps=null;
try {
//获得连接
conn=DBUtil.getConnection();
//开始事务
DBUtil.startTrans(conn);
String sql="delete from student where sno=?";
ps=conn.prepareStatement(sql);
ps.setString(1, sno);
//执行语句
int i=ps.executeUpdate();
//结束事务
DBUtil.endTrans(conn);
return i;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
try {
//异常时,回滚事务
DBUtil.rollbackTrans(conn);
} catch (SQLException e1) {
e1.printStackTrace();
}
}finally{
try {
//清除资源
DBUtil.clear(conn, ps);
} catch (SQLException e) {
e.printStackTrace();
}
}
return 0;
}
public int insertStudentInfo(StudentValue stu){
Connection conn=null;
PreparedStatement ps=null;
try {
//获得连接
conn=DBUtil.getConnection();
//开始事务
DBUtil.startTrans(conn);
String sql="insert into student(sname,age,birthday,sno) values(?,?,to_date(?,'yyyy-mm-dd'),?)";
ps=conn.prepareStatement(sql);
ps.setString(1, stu.getSname());
ps.setString(2, stu.getAge());
ps.setString(3, stu.getBirthday());
ps.setString(4, stu.getSno());
//执行语句
int i=ps.executeUpdate();
//结束事务
DBUtil.endTrans(conn);
return i;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
try {
//异常时,回滚事务
DBUtil.rollbackTrans(conn);
} catch (SQLException e1) {
e1.printStackTrace();
}
}finally{
try {
//清除资源
DBUtil.clear(conn, ps);
} catch (SQLException e) {
e.printStackTrace();
}
}
return 0;
}
public int updateStudentInfo(StudentValue stu){
Connection conn=null;
PreparedStatement ps=null;
try {
//获得连接
conn=DBUtil.getConnection();
//开始事务
DBUtil.startTrans(conn);
String sql="update student set sname=?,age=?,birthday=to_date(?,'yyyy-mm-dd') where sno=?";
ps=conn.prepareStatement(sql);
ps.setString(1, stu.getSname());
ps.setString(2, stu.getAge());
ps.setString(3, stu.getBirthday());
ps.setString(4, stu.getSno());
//执行语句
int i=ps.executeUpdate();
//结束事务
DBUtil.endTrans(conn);
return i;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
try {
//异常时,回滚事务
DBUtil.rollbackTrans(conn);
} catch (SQLException e1) {
e1.printStackTrace();
}
}finally{
try {
//清除资源
DBUtil.clear(conn, ps);
} catch (SQLException e) {
e.printStackTrace();
}
}
return 0;
}
}
//Test.java
package test;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
import value.StudentValue;
import dao.StudentDao;
public class Test {
public static void showMenu() {
System.out.println("********************");
System.out.println("1.查询学生信息");
System.out.println("2.添加学生信息");
System.out.println("3.删除学生信息");
System.out.println("4.更新学生信息");
System.out.println("5.退出");
System.out.println("********************");
}
public static void run() {
Scanner c = new Scanner(System.in);
StudentDao dao = new StudentDao();
while (true) {
showMenu();
int choice = c.nextInt();
switch (choice) {
case 1:
// 获得学生信息,并显示所有学生信息
List<StudentValue> slist = dao.getAllStudentInfo();
if (slist == null || slist.size() == 0) {
System.out.println("没有相关学生信息");
} else {
Iterator<StudentValue> it = slist.iterator();
while (it.hasNext()) {
StudentValue value = it.next();
System.out.print(value.getSno() + " ");
System.out.print(value.getSname() + " ");
System.out.print(value.getAge() + " ");
System.out.println(value.getBirthday());
}
}
break;
case 2:
System.out.println("请输入添加学生信息");
StudentValue stu = new StudentValue();
System.out.println("请输入学生编号");
stu.setSno(c.next());
System.out.println("请输入学生姓名");
stu.setSname(c.next());
System.out.println("请输入学生年龄");
stu.setAge(c.next());
System.out.println("请输入出生日期(格式yyyy-mm-dd)");
stu.setBirthday(c.next());
int i = dao.insertStudentInfo(stu);
if (i == 1) {
System.out.println("添加学生成功");
} else {
System.out.println("添加学生失败");
}
break;
case 3:
System.out.println("请输入删除学生学号");
String sno = c.next();
int j = dao.deleteStudentBySno(sno);
if (j == 1) {
System.out.println("删除学生成功");
} else {
System.out.println("删除学生失败");
}
break;
case 4:
System.out.println("请输入更新学生信息");
StudentValue stu1 = new StudentValue();
System.out.println("请输入学生编号");
stu1.setSno(c.next());
System.out.println("请输入学生姓名");
stu1.setSname(c.next());
System.out.println("请输入学生年龄");
stu1.setAge(c.next());
System.out.println("请输入出生日期(格式yyyy-mm-dd)");
stu1.setBirthday(c.next());
int k = dao.updateStudentInfo(stu1);
if (k == 1) {
System.out.println("更新学生成功");
} else {
System.out.println("更新学生失败");
}
break;
case 5:
System.out.println("系统退出");
System.exit(0);
}
}
}
public static void main(String[] args) {
run();
}
}