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