JDBC 编程示例

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


 

猜你喜欢

转载自blog.csdn.net/jiangjiewudi/article/details/9631623