JDBC操纵数据库的的总结和梳理

  • 1、对于获取数据库连接对象Connection.

           https://blog.csdn.net/qq_40301026/article/details/89412335

  • 2、对于Statement对象

           Statement对象主要是将SQL语句发送到数据库中。JDBC API中主要提供了三种Statement对象。

  • 3.对于 两种执⾏SQL的⽅法:

          executeQuery() ⽅法执⾏后返回单个结果集的,通常⽤于select语句
          executeUpdate()⽅法返回值是⼀个整数,指示受影响的⾏数,通常⽤于update、insert、delete

  • 4、对于 ResultSet对象

        ResultSet对象它被称为结果集,它代表符合SQL语句条件的所有⾏,并且它通过⼀套getXXX⽅法提供了对这些⾏中数据的访问。
        ResultSet⾥的数据⼀⾏⼀⾏排列,每⾏有多个字段,并且有⼀个记录指针,指针所指的数据⾏叫做当前数据⾏,我们只能来操作当前的数据⾏。我们如果想要取得某⼀条记录,就要使⽤ResultSet的next()⽅法 ,如果我们想要得到ResultSet⾥的所有记录,就应该使⽤while循环。
 

接下来对于具体用法进行总结和对比:

一、是使用Statement sql命令对象

1. 对于增删改

  • (1)、加载驱动包
  • (2)、获取连接数据库的Connection对象
  • (2.1)、将提交设置为手动提交
  • (3)、获取sql命令对象(Statament)
  • (4)、创建sql语句
  • (5)、执行sql命令(executeUpdate())
  • (5.1)、判断若执行成功,则提交(commit()),失败则回滚(rollback())
  • (6)、关闭相关资源。

附源码:One

2.对于查询

  • (1)、加载驱动包
  • (2)、获取连接数据库的Connection对象
  • (3)、获取sql命令对象(Statament)
  • (4)、创建sql语句
  • (5)、执行sql命令(executeQuery())
  • (5.1)、将executeQuery()返回的值存在ResultSet 结果集里面。
  • (5.2)、将表信息的每一行信息存储在一个对象里面,通过ResultSet对象获得
  • (5.3)、方面拿取,再将这些对象存在ArrayList容器中。
  • (6)关闭相关资源。

附源码:Two

 

二、使用PreparedStatement sql命令对象

1.对于增删改。

  • (1)、加载驱动包
  • (2)、获取连接数据库的Connection对象
  • (2.1)、将提交设置为手动提交
  • (3)、创建sql语句
  • (4)、获取sql命令对象(PreparedStatement)
  • (5)、给占位符赋值
  • (6)、执行sql命令(executeUpdate())
  • (6.1)、判断若执行成功,则提交(commit()),失败则回滚(rollback())
  • (7)、关闭相关资源。

附源码:Three

 

2.对于查询

  • (1)、加载驱动包
  • (2)、获取连接数据库的Connection对象
  • (3)、创建sql语句
  • (4)、获取sql命令对象(PreparedStatement)
  • (5)、给占位符赋值
  • (6)、执行sql命令(executeQuery())
  • (6.1)、将executeQuery()返回的值存在ResultSet 结果集里面。
  • (6.2)、将表信息的每一行信息存储在一个对象里面,通过ResultSet对象获得
  • (6.3)、方面拿取,再讲这些对象存在ArrayList容器中。
  • (7)关闭相关资源。

附源码:Four

 

源码:

One:

package cn.liu.jdbc.summarize;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;


public class One {
	public void execute() {
		Connection conn = null;
		Statement state = null;
		try {
			//1.加载驱动包
			Class.forName("oracle.jdbc.driver.OracleDriver");
			//2.获取数据库连接对象
			conn = DriverManager.getConnection("jdbc:oracle:thin://@DESKTOP-F4QSNQL:1521/XE", "scott", "qwer");
			//2.1设置为手动提交
			conn.setAutoCommit(false);
			//3.创建sql命令对象
			state = conn.createStatement();
			//4.创建sql命令
			String sql = "update student set age=19 where sno=1";
			//5.执行sql命令
			int i = state.executeUpdate(sql);
			if(i>0) {
				//5.1手动提交
				conn.commit();
				System.out.println("执行成功!");
			}else {
				//5.2回滚
				conn.rollback();
				System.out.println("执行失败!");
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		//6.关闭资源
		try {
			if(state!=null) {
				state.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			if(conn!=null) {
				conn.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

Two :

package cn.liu.jdbc.summarize;

/**
 * 将表里的一行信息转化为一个实体对象
 * @author Dick
 *
 */
public class Student {
	private int sno;//学号
	private String sex;//性别
	private int age;//年龄
	private String address;//住址
	
	
	public Student() {}


	public int getSno() {
		return sno;
	}


	public void setSno(int sno) {
		this.sno = sno;
	}


	public String getSex() {
		return sex;
	}


	public void setSex(String sex) {
		this.sex = sex;
	}


	public int getAge() {
		return age;
	}


	public void setAge(int age) {
		this.age = age;
	}


	public String getAddress() {
		return address;
	}


	public void setAddress(String address) {
		this.address = address;
	}
	
	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder("[");
		sb.append("学号:"+this.getSno()+"  ");
		sb.append("性别:"+this.getSex()+"  ");
		sb.append("年龄:"+this.getAge()+"  ");
		sb.append("住址:"+this.getAddress()+"]");
		return sb.toString();
	}
}



package cn.liu.jdbc.summarize;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Iterator;


public class Two {
	public void execute() {
		ArrayList<Student> list = new ArrayList<Student>();
		Connection conn = null;
		Statement state = null;
		ResultSet re = null;
		try {
			//1.加载驱动包
			Class.forName("oracle.jdbc.driver.OracleDriver");
			//2.获取数据库连接对象
			conn = DriverManager.getConnection("jdbc:oracle:thin://@DESKTOP-F4QSNQL:1521/XE", "scott", "qwer");
			//3.创建sql命令对象
			state = conn.createStatement();
			//4.创建sql命令
			String sql = "select * from student";
			//5.执行sql命令
			//5.1、将executeQuery()返回的值存在ResultSet  结果集里面。
			re =  state.executeQuery(sql);
			//5.2、将表信息的每一行信息存储在一个对象里面,通过ResultSet对象获得
			while(re.next()) {
				Student stu = new Student();
				stu.setSno(re.getInt("sno"));
				stu.setSex(re.getString("sex"));
				stu.setAge(re.getInt("age"));
				stu.setAddress(re.getString("address"));
				//5.3、方面拿取,再将这些对象存在ArrayList容器中
				list.add(stu);
			}
			Iterator it = list.iterator();
			while(it.hasNext()) {
				System.out.println(it.next().toString());
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		//6.关闭资源
		try {
			if(re!=null) {
				re.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			if(state!=null) {
				state.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			if(conn!=null) {
				conn.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

Three: 

package cn.liu.jdbc.summarize;

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



public class Three {
	public void execute() {
		Connection conn = null;
		PreparedStatement state = null;
		try {
			//1.加载驱动包
			Class.forName("oracle.jdbc.driver.OracleDriver");
			//2.获取数据库连接对象
			conn = DriverManager.getConnection("jdbc:oracle:thin://@DESKTOP-F4QSNQL:1521/XE", "scott", "qwer");
			//2.1设置为手动提交
			conn.setAutoCommit(false);
			//3.创建sql命令
			String sql = "update student set age=? where sno=?";
			//4.创建sql命令对象
			state = conn.prepareStatement(sql);
			//5.给占位符赋值
			state.setInt(1, 13);
			state.setInt(2, 1);
			//6.执行sql命令(executeUpdate())
			//判断若执行成功,则提交(commit()),失败则回滚(rollback())
			int i = state.executeUpdate();
			if(i>0) {
				//6.1手动提交
				conn.commit();
				System.out.println("执行成功!");
			}else {
				//6.2.2回滚
				conn.rollback();
				System.out.println("执行失败!");
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		//7.关闭资源
		try {
			if(state!=null) {
				state.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			if(conn!=null) {
				conn.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

Four: 

package cn.liu.jdbc.summarize;

/**
 * 将表里的一行信息转化为一个实体对象
 * @author Dick
 *
 */
public class Student {
	private int sno;//学号
	private String sex;//性别
	private int age;//年龄
	private String address;//住址
	
	
	public Student() {}


	public int getSno() {
		return sno;
	}


	public void setSno(int sno) {
		this.sno = sno;
	}


	public String getSex() {
		return sex;
	}


	public void setSex(String sex) {
		this.sex = sex;
	}


	public int getAge() {
		return age;
	}


	public void setAge(int age) {
		this.age = age;
	}


	public String getAddress() {
		return address;
	}


	public void setAddress(String address) {
		this.address = address;
	}
	
	@Override
	public String toString() {
		StringBuilder sb = new StringBuilder("[");
		sb.append("学号:"+this.getSno()+"  ");
		sb.append("性别:"+this.getSex()+"  ");
		sb.append("年龄:"+this.getAge()+"  ");
		sb.append("住址:"+this.getAddress()+"]");
		return sb.toString();
	}
}




package cn.liu.jdbc.summarize;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Iterator;



public class Four {
	public void execute() {
		Connection conn = null;
		PreparedStatement state = null;
		ArrayList<Student> list = new ArrayList<Student>();
		try {
			//1.加载驱动包
			Class.forName("oracle.jdbc.driver.OracleDriver");
			//2.获取数据库连接对象
			conn = DriverManager.getConnection("jdbc:oracle:thin://@DESKTOP-F4QSNQL:1521/XE", "scott", "qwer");
			//3.创建sql命令
			String sql = "select * from student where sno=?";
			//4.创建sql命令对象
			state = conn.prepareStatement(sql);
			//5.给占位符赋值
			state.setInt(1, 1);
			//6.执行sql命令(executeUpdate())
			//(6.1)、将executeQuery()返回的值存在ResultSet  结果集里面。
			ResultSet re = state.executeQuery();
			//(6.2)、将表信息的每一行信息存储在一个对象里面,通过ResultSet对象获得
			//(6.3)、方面拿取,再讲这些对象存在ArrayList容器中。
			while(re.next()) {
				Student stu = new Student();
				stu.setSno(re.getInt("sno"));
				stu.setSex(re.getString("sex"));
				stu.setAge(re.getInt("age"));
				stu.setAddress(re.getString("address"));
				//5.3、方面拿取,再将这些对象存在ArrayList容器中
				list.add(stu);
			}
			Iterator it = list.iterator();
			while(it.hasNext()) {
				System.out.println(it.next().toString());
			}
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		} catch (SQLException e) {
			e.printStackTrace();
		}
		//7.关闭资源
		try {
			if(state!=null) {
				state.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			if(conn!=null) {
				conn.close();
			}
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值