反射之前奏Oracle简单版

student表
这里写图片描述
Student表的属性

public class Student {
    private int id;
    private String name;
    private String sex;
//构造方法
    public Student() {
    }
    public Student(int id, String name, String sex) {
        super();
        this.id = id;
        this.name = name;
        this.sex = sex;
    }
//get和set方法
    public int getId() {
        return id;
    }
    public void setId(int id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getSex() {
        return sex;
    }
    public void setSex(String sex) {
        this.sex = sex;
    }
//重写toTring方法
    @Override
    public String toString() {
        return "id=" + id + ", name=" + name + ", sex=" + sex;
    }
}

写一个用来连接和加载驱动以及关闭的帮助方法

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class JdbcHelp {
//需要用到的String参数
    private static String driver = "oracle.jdbc.driver.OracleDriver";
    private static String url = "jdbc:oracle:thin:@localhost:1521:ORCL";
    private static String user = "Scott";
    private static String password = "tiger";
/*单例的懒汉式
1、定义一个实例JdbcHelp Instance
2、私有化构造方法,使得别人不能new一个对象;
3、判断,在本类new一个对象
*/
    private static JdbcHelp Instance;
    private JdbcHelp() {    }
    public static JdbcHelp getInstance() {
        if (Instance == null) {
            Instance = new JdbcHelp();
        }
        return Instance;
    }
    // 加载驱动,因为是格式不变且共享,所以单独放一个静态块里
    static {
        try {
            Class.forName(driver);
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            System.out.println("驱动加载失败异常");
        }
    }

// 连接Oracle方法
    public static Connection getconn() {
        try {
            return DriverManager.getConnection(url, user, password);
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("连接失败异常");
            return null;
        }
    }
    // 关闭方法,主要用到两种,这里用到重载
    public static void close(Connection conn, PreparedStatement prep)
            throws SQLException {
        if (prep != null && prep.isClosed()) {
            prep.close();//先关声明
        }
        if (conn != null && conn.isClosed()) {
            conn.close();//再关连接
        }
    }

    public static void close(Connection conn, PreparedStatement prep,
            ResultSet rSet) throws SQLException {
        if (rSet != null && rSet.isClosed()) {
            rSet.close();//先关查询
        }
        close(conn, prep);
    }
}

主要内容,增删改查,操作Student表里的东西

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class StudentSelect implements InterStu{
//  单例饿汉式
    private static StudentSelect Instance=new StudentSelect();
    private StudentSelect(){    }
    public static StudentSelect getInstance(){
        return Instance;
    }
/*
    1、查询Student所有信息
    2、根据学生id查出其信息
    3、根据name查出其信息
    4、修改student信息update
    5、删除student信息delete
    6、增加student信息add用insert into
    */
    //调用帮助类
    private JdbcHelp jh =JdbcHelp.getInstance();
    private Connection conn;//连接
    private PreparedStatement prep;//声明
    private ResultSet rSet;//查询结果
//
//  1、查询Student所有信息
    public List<Student> getStu() {//查询到的东西用集合来装
        List<Student> list = new ArrayList<Student>();
        try {
            conn = jh.getconn();//连接
            String sql = "select * from student";//查询语句
            prep = conn.prepareStatement(sql);//预加载
            rSet = prep.executeQuery();
            //将查询结果放到集合里
            while(rSet.next()){
                Student stu=new Student();
                stu.setId(rSet.getInt(1));
                stu.setName(rSet.getString(2));
                stu.setSex(rSet.getString(3));
                list.add(stu);//用add加到集合里
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
        //关闭
            try {
                JdbcHelp.close(conn,prep,rSet);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                conn=null;
                prep=null;
                rSet=null;
            }
        }
        return list;//返回集合
    }

//  1、根据id查出所有信息
    public Student getId1(int Id) {
//只是查一个,不需要返回集合 
        Student stu=null;
        try {
            conn = jh.getconn();
            String sql = "select * from student where id=?";
            prep = conn.prepareStatement(sql);
            prep.setInt(1,Id);
            rSet = prep.executeQuery();
//          查一个,用if语句就行
            if(rSet.next()){
                stu=new Student();
                stu.setId(rSet.getInt(1));
                stu.setName(rSet.getString(2));
                stu.setSex(rSet.getString(3));          
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally{
            try {
                JdbcHelp.close(conn,prep,rSet);
            } catch (SQLException e) {
                e.printStackTrace();
                conn=null;
                prep=null;
                rSet=null;
            }
        }
        return stu;
    }
//  1、根据name查出所有信息
    public Student getName1(String name) {
        Student stu=null;
        try {
            conn = jh.getconn();
            String sql = "select * from student where name=?";
            prep = conn.prepareStatement(sql);
            prep.setString(1,name);
            rSet = prep.executeQuery();
//          查一个,用if就行
            if(rSet.next()){
                stu=new Student();
                stu.setId(rSet.getInt(1));
                stu.setName(rSet.getString(2));
                stu.setSex(rSet.getString(3));
            }
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                JdbcHelp.close(conn,prep,rSet);
            } catch (SQLException e) {
            e.printStackTrace();
                conn=null;
                prep=null;
                rSet=null;
            }
        }
        return stu;
    }
//==============================================================================================
//  修改student信息,不需要返回值
    public void updateStu(Student stu){
        try {
            conn = jh.getconn();
            String sql = "update student set name=?,sex=? where id=?";
            prep = conn.prepareStatement(sql);
            //修改的方法
            prep.setString(1,stu.getName());
            prep.setString(2,stu.getSex());
            prep.setInt(3,stu.getId());
            prep.execute();//执行
            }
        catch (SQLException e) {
            e.printStackTrace();
        }finally{
            try {
                JdbcHelp.close(conn,prep);
            } catch (SQLException e) {
                e.printStackTrace();
                conn=null;
                prep=null;
            }
        }
    }
//  删除student信息
    public void deleteStu(int Id){
        try {
            conn = jh.getconn();
            String sql = "delete student where id=?";
            prep = conn.prepareStatement(sql);
            prep.setInt(1,Id);
            prep.execute();
            }
        catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                JdbcHelp.close(conn,prep);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                conn=null;
                prep=null;
            }
        }
    }
//  add student信息
    public void addStu(Student stu){
        try {
            conn = jh.getconn();
            String sql = "insert into student values(?,?,?)";
            prep = conn.prepareStatement(sql);
            prep.setInt(1,stu.getId());
            prep.setString(2,stu.getName());
            prep.setString(3,stu.getSex()); 
            prep.execute();
            }
        catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }finally{
            try {
                JdbcHelp.close(conn,prep);
            } catch (SQLException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
                conn=null;
                prep=null;
            }
        }
    }
}

测试方法
1、查询所有

public class StudentTest {
public static void main(String args[]){
//调用查询类
StudentSelect stuse=StudentSelect.getInstance();
//创建一个ArrayList集合用来放getStu返回的集合
ArrayList<Student> stus=(ArrayList<Student>) stuse.getStu();//需要强转
//判断非空
    if(stus!=null){
    //for增强遍历
        for(Student s:stus){
            System.out.println(s);
            }
        }
    }
}
//查询一个      System.out.println(stuse.getId1(6));
System.out.println(stuse.getName1("吴兰"));

dml方法

public class StudentTest {
public static void main(String args[]){
//调用查询类
StudentSelect stuse=StudentSelect.getInstance();
//第一种方法
    Student stu=new Student(3,"lc","男女");
    stuse.updateStu(stu);
//第二种方法
    Student stu1=stuse.getId1(4);//获得原来4里Student对象
    stu.setName("小米");
    stu.setSex("男");
    stuse.updateStu(stu1);
//删除
stuse.deleteStu(6);
//增加
Student stu2=new Student(8,"李白""男");
stuse.addStu(Student stu2);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值