JDBC常用的类有
1.DriverManager
2.Connection
3.Statement
4.PreparedStatement
5.ResultSet
1.DriverManager
DriverManager类的主要作用就是连接数据库,该类中有一个方法就是
static Connection getConnection(String url,String username,String password)
该方法为静态方法,可以直接通过类名调用也就是DriverManager.getConnection()
三个参数是
url:指定数据库链接的路径(“jdbc:mysql://localhost:3306/test”)
格式为:“jdbc:mysql:// ip(或者域名) : 端口号 / 数据库名称”
username:名称(“root”)
password:密码(“123456”)
小细节 :如果你连接的是本机的MySQL并且端口默认为3306,那么数据库连接路径可以简写为jdbc:mysql:///数据库名称
2.Connection
功能:
1.获取执行sql的对象
在Connection类中有两个方法,分别是
Statement createStatement();
PreparedStatement prepareStatement(String sql);
他们都是获取执行对象的方法,后边会有详细解释
2.管理事务
Connection也封装了三个方法分别是
开启事务
setAutoCommit(boolean autoCommit)
//设置为false就是开启事务
提交事务
Commit();
回滚事务
rollback();
3.Statement
用于执行静态sql语句并返回其生成的结果的对象
1.执行sql
boolean execute(String sql);
//该语句可以执行任意sql语句,了解即可,用的不多
如果返回的是true,那么返回的就是ResultSet结果集,如果返回的是false,那么就是更新计数或者没有结果
int executeUpdate(String sql);
执行的是DML语句或者DDL语句,也就是增删改语句或者(create,alter ,drop)等语句
返回值是影响的行数,可以通过这个返回值来判断DML语句是否执行成功,若返回值>0就是执行成功,反之就是失败
Resultset executeQuery(String sql);
执行DQL语句比如select语句,下面我们用案例来演示区别
练习
- student 添加一条记录
- student 修改记录
- student 删除一条记录
附上代码
package com.byzhang.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
//这次的代码我们不用抛出异常的形式,而是采用try catch的方式来捕捉异常,会更规范
public class JdbcDemo2 {
public static void main(String[] args) throws SQLException {
Statement stmt = null;
Connection conn = null;
try{
//1.注册驱动
Class.forName("com.mysql.jdbc.Driver");
//2.定义sql
String sql = "insert into student values(4,99)";
//3.获取Connection对象
conn = DriverManager.getConnection("jdbc:mysql:///test?useSSL=false","root","123456");
//4.获取执行sql的Statement对象
stmt = conn.createStatement();
//5.执行sql
int cnt = stmt.executeUpdate(sql);
//6.处理结果
if(cnt > 0){
System.out.println("添加成功!!");
}else{
System.out.println("添加失败!!");
}
}catch (ClassNotFoundException | SQLException e){
e.printStackTrace();
}finally {
//这里因为stmt是由conn产生的,所以先关闭stmt 再关闭conn
//避免空指针异常,先判断他是不是null
if(stmt != null){
try{
stmt.close();
}catch (SQLException e){
e.printStackTrace();
}
}
if(conn != null){
try{
conn.close();
}catch (SQLException e){
e.printStackTrace();
}
}
}
}
}
update和delete的实现过程是一样的
不过在执行DDL语句的时候不管成功与否都是返回0
4.ResultSet
结果集对象,封装查询结果
next();
//游标向下移动一行
getXxx(参数);
//获取数据,其中Xxx代表数据类型
getInt(1);//表示得到第一列的值,也就是id
getInt("id");//这样表示得到id的值,返回值是int
getString(2);
getString("name");
getDouble(3);
getDouble("score");
//等等很多这样的写法
这是ResultSet以及executeQuery的操作,不同的地方用红框框了起来
5.PreparedStatement
用于执行预编译的sql语句,我们将在后续介绍其用法