JDBC六部曲(二)

JDBC六步曲(以jdbc8.x为例)

第一步:导包

  • 导包:在工程里创建一个文件夹lib,找到下载好的jdbc驱动包的jar包mysql-connector-java.jar复制粘贴到当前工程的lib文件夹内。点开 lib目录,鼠标右击mysql-connector-java.jar压缩包,点击Add as Library ,点击OK就可以了。
    1.复制粘贴然后点击OK
    在这里插入图片描述
    2.鼠标右击选择Add as Library,然后点击OK就可以了。
    在这里插入图片描述

第二步:加载驱动类

  • 加载驱动类:
 //2.加载驱动类
 String className = "com.mysql.cj.jdbc.Driver";
 Class.forName(className);

知识点
有5种方式可以加载驱动类
第一种:Class.forName(className);
第二种:DriverManager.registerDriver(new Driver());
第三种:new Driver();
第四种:System.setProperty(“jdbc.driver”,”com.mysql.cj.jdbc.Driver”);
第五中:可以不写,但是性能不高。

第三步:获取连接

  • 获取连接:
    //3.获取连接
    String url = "jdbc:mysql://localhost:3306/test?serverTimezone=UTC";
    /**这是个固定格式。"jdbc:数据库名://ip地址:端口号/数据库名?serverTimezone=UTC"*/  
    //mysql表示MySQL数据库,如果是Oracle数据库就改为oracle。
    String user = "root";//表示数据库
    String password = "123456";//数据库密码
    Connection conn = DriverManager.getConnection(url,user,password);
    String sql = "SELECT * FROM ATM WHERE ANAME=?";//查询

第四步:创建状态参数

  • 创建状态参数:
//4.创建预处理状态参数
  PreparedStatement pstate = conn.prepareStatement(sql);
  pstate.setString(1,aname);

第五步: 执行数据库操作

  • 执行数据库操作:
    //5.执行数据库操作
    ResultSet rs = pstate.executeQuery();//调用查询的方法
    //state.executeUpdate();//insert delete update 都调用这个方法
    while (rs.next()){//判断是否有下一行
        String name = rs.getString("name");
        String sex = rs.getString("sex");
        String age = rs.getString("age");
        String address = rs.getString("address");
        System.out.println(name+"--"+sex+"--"+age+"--"+address);
            }

知识点
1)执行executeQuery();//查询语句的方法
2)执行executeUpdate();//增删改语句的方法
返回值是ResultSet类型,本质类似于Set<Map<String,Object>>:比如查询一条语句,将列名作为key,列名可以默认为String类型。查询所得的值作为value,value可以是多种类型的,因而用object存储。如果查询多条语句,则需要多个map集合,而多个map集合用set集合存储,可用迭代器来获取。
补充
rs.getXXX(列的序号int–从1开始);
rs.getXXX(“列名字”);
rs.getString();//可以接收任何一个列的值,什么类型都可以
rs.getInt();//不能接收其他类型,比如String

第六步:关闭流

  • 关闭流:先连接的后关(倒着关闭)
//6.关闭流
 rs.close();
 state.close();
 conn.close();

总结

public class AtmDao {
    Atm atm = new Atm();
     public Atm selectOne(String aname){
         String className = "com.mysql.cj.jdbc.Driver";
         String url = "jdbc:mysql://localhost:3306/atm?serverTimezone=UTC&characterEncoding=utf8";
         String user = "root";
         String password = "123456";
         String sql = "SELECT * FROM ATM WHERE ANAME=?";
         Connection conn = null;
         PreparedStatement pstate = null;
         ResultSet rs = null;
         try {
             Class.forName(className);//加载驱动
             conn = DriverManager.getConnection(url,user,password);//获取连接
             pstate = conn.prepareStatement(sql);//创建预处理状态参数
             pstate.setString(1,aname);
             rs = pstate.executeQuery();
             if (rs.next()){//判断是否找到一行数据
                 atm.setAname(rs.getString("aname"));
                 atm.setApassword(rs.getString("apassword"));
                 atm.setAbalance(rs.getFloat("abalance"));
             }
         } catch (Exception e) {
             e.printStackTrace();
         }finally {
             try {
                 if (rs != null){
                     rs.close();
                 }
             }catch (Exception e){
                 e.printStackTrace();
             }
             try {
                 if (pstate != null){
                     pstate.close();
                 }
             }catch (Exception e){
                 e.printStackTrace();
             }
             try {
                 if (conn != null){
                     conn.close();
                 }
             }catch (Exception e){
                 e.printStackTrace();
             }
         }
         return atm;
     }
}

补充:jdbc驱动包的不同版本使用的不同区别
JDBC驱动包5.x
1)加载驱动类:”com.mysql.jdbc.Driver”
2)获取连接 url—>jdbc:mysql://ip:port/databases名

JDBC驱动包8.x
1)加载驱动类:”com.mysql.cj.jdbc.Driver”
2)获取连接 url—>jdbc:mysql://ip:port/databases名?serverTimezone=UTC

留言:到这里 JDBC基本的知识 就总结完毕了,想要学习更多的伙伴可以查看博主主页哦 ~

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

李宸净

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值