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