*JDBC
什么是JDBC?
JDBC(Java DataBase Connectivity)就是Java数据库连接.
JDBC中的核心类有:DriverManager、Connection、Statement,和ResultSet!
添加删除更新
public boolean addStudent(Student student){
Connection con = null;
try {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.注册驱动,获取Connection对象
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/school?" +
"useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC",
"root","root");
//3.获取SQL执行对象
Statement stm = con.createStatement();
String sql = "INSERT INTO `stu` VALUES('"+student.getSid()+"','"+student.getSname()+"',"+
student.getAge()+",'"+student.getGender()+"')";
//4.执行SQL,获取返回结果
int num = stm.executeUpdate(sql);
//5.处理结果
if(num > 0 ){
return true;
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
//6.释放资源
if(con != null){
try {
con.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
return false;
}
查询
public List<Student> findAllStudent(){
Connection con = null;
ResultSet rs = null;
List<Student> studentList = new ArrayList<>();
try {
//1.加载驱动
Class.forName("com.mysql.jdbc.Driver");
//2.注册驱动,获取Connection对象
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/school?" +
"useUnicode=true&characterEncoding=utf8&useSSL=false&serverTimezone=UTC",
"root","root");
//3.获取SQL执行对象
Statement stm = con.createStatement();
String sql = "SELECT * FROM `stu`";
//4.执行SQL,获取返回结果
rs = stm.executeQuery(sql);
//5.遍历结果集
while(rs.next()){
Student student = new Student();
student = new Student();
student.setSid(rs.getString("sid"));
student.setSname(rs.getString("sname"));
student.setAge(rs.getInt("age"));
student.setGender(rs.getString("gender"));
//添加到集合中
studentList.add(student);
}
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException throwables) {
throwables.printStackTrace();
}finally {
//6.释放资源
if(rs != null){
try {
rs.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
if(con != null){
try {
con.close();
} catch (SQLException throwables) {
throwables.printStackTrace();
}
}
}
return studentList;
}
DriverManager(驱动管理者)
1. 注册驱动:这可以让JDBC知道要使用的是哪个驱动;
2. 获取Connection:如果可以获取到Connection,那么说明已经与数据库连接上了。
Connection(数据库连接对象)
1.Connection最为重要的一个方法就是用来获取Statement对象
Statement(SQL执行对象)
作用:
1.向数据库发送SQL
2.执行SQL,并且获取执行结果
核心方法:
1. void executeUpdate(String sql):执行更新操作(insert、update、delete等);
2. ResultSet executeQuery(String sql):执行查询操作,数据库在执行查询后会把查询结果,查询结果就是ResultSet;
ResultSet(结果集对象)
将查询结果封装到Resultset结果集中。结果集是一个二维的表格,有行有列。
核心方法:
1. boolean next():使“行光标”移动到下一行,并返回移动后的行是否存在;
2. XXX getXXX(int col):获取当前行指定列上的值,参数就是列数,列数从1开始,而不是0。
3. XXX getXXX(String colName):获取当前行指定列上的值,参数就是列数,列数从1开始,而不是0。
怎么使用JDBC?
1.导入mysql-connector-java-5.1.47.jar到项目中。
2.加载mysql驱动
*PreparedStatement
-Statement
作用:
1.发送SQL语句
2.执行SQL语句
-PreparedStatement: 是Statement子类
-作用:
目的:解决SQL注入,防止SQL攻击
1.预编译SQL语句,后期再注入SQL参数
2.发送SQL语句
3.执行SQL语句
-CallableStatement:是Statement子类
-区别:支持存储过程的执行和调用
执行效率差别