JDBC常用的类有
1.DriverManager
2.Connection
3.Statement
4.ResultSet
5.PreparedStatement
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语句,我们将在后续介绍其用法