JDBC驱动加载

JDBC的使用 3、请注意,这个示例假设你正在使用MySQL数据库,并且已经添加了MySQL JDBC驱动到你的项目类路径中。你需要根据你的实际数据库类型和连接信息来修改url、username和password常量。同时,确保正确处理可能出现的异常。对创建连接和关闭资源的BaseDao工具类的封装。 阅读详情

JDBC

  1. JDBC流程

    1. 加载驱动:Class.forname(“数据驱动”);
      JDBC所用jar包下载

    2. 获取连接:Connection con = DriverManage.getConnetion();

      • package com.zf.dao;
        import com.zf.pojo.User;
        import com.zf.util.DButil;
        
        import java.sql.Connection;
        import java.sql.PreparedStatement;
        import java.sql.ResultSet;
        import java.sql.SQLException;
        import java.util.List;
        public class UserDaoImple implements UserDaoIf {
            Connection con = null;
            PreparedStatement pst = null;
            ResultSet rs = null;
            @Override
            public boolean addUser(User u) {
                try {
                    //1.加载驱动  2.获取连接
                    con = DButil.getCon();
                    //3.获取执行sqlstatement对象
                    pst = con.prepareStatement("insert into user values(null,?,?,?,?,?,?,?)");
                    pst.setString(1,u.getUserName());
                    pst.setString(2,u.getPassWord());
                    pst.setString(3,u.getName());
                    pst.setInt(4,u.getAge());
                    pst.setString(5,u.getSex());
                    pst.setString(6,u.getPhone());
                    pst.setString(7,u.getAddress());
                    //4.执行sql语句
                    int i = pst.executeUpdate();
                    if(i>0){
                        return true;
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                } finally {
                    //6.关闭资源
                    DButil.dbClose(con,pst,rs);
                }
                return false;
            }
        
            @Override
            public List<User> getAllUser() {
                return null;
            }
        
            @Override
            public User getUserById(int uid) {
                return null;
            }
        
            @Override
            public boolean upUser(User u) {
                return false;
            }
        
            @Override
            public boolean delUserById(int uid) {
                return false;
            }
        }
        
        
    3. 获取执行sql语句的statement对象:com.prepareStatement(“sql语句”);

      •  package com.zf.pojo;
        
        import java.util.Objects;
        
        public class User {
            private int uid;
            private String userName;
            private String passWord;
            private String name;
            private int age;
            private String sex;
            private String phone;
            private String address;
            //alt + ins
            public User(int uid, String userName, String passWord, String name, int age, String sex, String phone, String address) {
                this.uid = uid;
                this.userName = userName;
                this.passWord = passWord;
                this.name = name;
                this.age = age;
                this.sex = sex;
                this.phone = phone;
                this.address = address;
            }
        
            @Override
            public String toString() {
                return "User{" +
                        "uid=" + uid +
                        ", userName='" + userName + '\'' +
                        ", passWord='" + passWord + '\'' +
                        ", name='" + name + '\'' +
                        ", age=" + age +
                        ", sex='" + sex + '\'' +
                        ", phone='" + phone + '\'' +
                        ", address='" + address + '\'' +
                        '}';
            }
        
            @Override
            public boolean equals(Object o) {
                if (this == o) return true;
                if (o == null || getClass() != o.getClass()) return false;
                User user = (User) o;
                return uid == user.uid &&
                        age == user.age &&
                        Objects.equals(userName, user.userName) &&
                        Objects.equals(passWord, user.passWord) &&
                        Objects.equals(name, user.name) &&
                        Objects.equals(sex, user.sex) &&
                        Objects.equals(phone, user.phone) &&
                        Objects.equals(address, user.address);
            }
        
            @Override
            public int hashCode() {
                return Objects.hash(uid, userName, passWord, name, age, sex, phone, address);
            }
        
            public int getUid() {
                return uid;
            }
        
            public void setUid(int uid) {
                this.uid = uid;
            }
        
            public String getUserName() {
                return userName;
            }
        
            public void setUserName(String userName) {
                this.userName = userName;
            }
        
            public String getPassWord() {
                return passWord;
            }
        
            public void setPassWord(String passWord) {
                this.passWord = passWord;
            }
        
            public String getName() {
                return name;
            }
        
            public void setName(String name) {
                this.name = name;
            }
        
            public int getAge() {
                return age;
            }
        
            public void setAge(int age) {
                this.age = age;
            }
        
            public String getSex() {
                return sex;
            }
        
            public void setSex(String sex) {
                this.sex = sex;
            }
        
            public String getPhone() {
                return phone;
            }
        
            public void setPhone(String phone) {
                this.phone = phone;
            }
        
            public String getAddress() {
                return address;
            }
        
            public void setAddress(String address) {
                this.address = address;
            }
        }
         
          
        
        package com.zf.util;
        import org.apache.commons.dbcp.BasicDataSource;
        
        import java.io.IOException;
        import java.sql.Connection;
        import java.sql.PreparedStatement;
        import java.sql.ResultSet;
        import java.sql.SQLException;
        import java.util.Properties;
        
        public class DButil {
            private static String driver;
            private static String url;
            private static String user;
            private static String pass;
            private static BasicDataSource ds;
            static {
                Properties ps = new Properties();
                try {
                    ps.load(DButil.class.getClassLoader()
                            .getResourceAsStream("db.properties"));
                    driver = ps.getProperty("driver");
                    url = ps.getProperty("url");
                    user = ps.getProperty("user");
                    pass = ps.getProperty("pass");
        
                    ds = new BasicDataSource();
                    ds.setDriverClassName(driver);
                    ds.setUrl(url);
                    ds.setUsername(user);
                    ds.setPassword(pass);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            public static Connection getCon() throws SQLException {//1.记载驱动 2.获取连接
                return ds.getConnection();
            }
            public static void dbClose(Connection con, PreparedStatement pst, ResultSet rs){//6关闭资源
                if(con!=null){
                    try {
                        if(!con.isClosed()){
                            con.close();
                        }
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if(pst!=null){
                    try {
                        pst.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
                if(rs!=null){
                    try {
                        rs.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
            }
            public static void main(String[] args) throws SQLException {
                System.out.println(DButil.getCon().getClass().getName());
            }
        }
        
        
    4. 执行sql语句:executeUpdate();返回影响行数 executeQuery();返回结果集ResultSet

      • package com.zf.dao;
        import com.zf.pojo.User;
        import java.util.List;
        public interface UserDaoIf {
            //添加用户
            public boolean addUser(User u);
            //查询所有用户
            public List<User> getAllUser();
            //根据id查询用户
            public User getUserById(int uid);
            //修改用户
            public boolean upUser(User u);
            //删除用户
            public boolean delUserById(int uid);
        }
        
        
        #测试
            import com.zf.dao.UserDaoImple;
        import com.zf.pojo.User;
        
        public class Test {
            public static void main(String[] args) {
                UserDaoImple dao = new UserDaoImple();
                User u = new User(0, "admin", "123456",
                        "张三", 20, "男", "110", "甘肃兰州");
                boolean b = dao.addUser(u);
                System.out.println(b);
            }
        }
        
        
    5. 处理结果集:ResultSet.next() 获取结果集中的内容

    6. 关闭资源:close();

JDBC为什么使用反射加载驱动 一直不太明白在使用JDBC的时候用Class.forName("com.mysql.jdbc.Driver")去加载驱动,就谷歌了一下,得到如下答案:前言JDBC源码地址 还有 在解释具体原因之前先简单看下Class.forName做了什么。假设一个类以前从来没有被装进内存过,Class.forName(String className)这个方法会做以下几件事情: 1、装载。将字节码读入内存, 阅读详情

相关推荐

JDBC加载数据库驱动程序

JDBC加载数据库驱动程序

weixin_50993868的博客 1425

JDBC基础

jdbc

weixin_51432198的博客 804

JDBC驱动加载详解

JDBC 驱动加载JDBC 使用的核心部分之一。通过。

m0_59539752的博客 2542

Java 基础】33 JDBC

Java JDBC 提供了连接和操作关系型数据库的标准接口,通过这些接口,我们可以在 Java 程序中执行各种数据库操作。本文深入介绍了 JDBC 的基本概念、建立数据库连接的步骤,以及常见的数据库操作。通过合理使用 JDBC,我们可以轻松地与数据库进行交互,实现数据的存取和管理。

好久不见的流星 1089

JDBC驱动加载机制

JDBC驱动加载的原理,以及JDBC4.0之后spi技术带来的加载机制变化。

BuquTianya的专栏 4401

JDBC驱动加载原理全面解析

JDBC概念 Java DataBase Connectivity(Java数据库连接技术) 它是将JavaSQL结合且独立于特定的数据库系统的应用程序编程接口(API-它是一种可用于执行SQL语句的JavaAPI,即由一组用Java语言编写的类与接口所组成) JDBC设计的目的 它是一种规范,设计出来的主要目的是为了让各个数据库开发商为Java程序员提供标准的数据访问类和接口,使得独立于DBM...

zhouym_的博客 3717

加载mysqljdbc驱动_JDBC驱动加载

概述一般情况下,在应用程序中进行数据库连接,调用JDBC接口,首先要将特定厂商的JDBC驱动实现加载到系统内存中,然后供系统使用。基本结构图如下:驱动加载入内存的过程这里所谓的驱动,其实就是实现了java.sql.Driver接口的类。如oracle的驱动类是 oracle.jdbc.driver.OracleDriver.class(此类可以在oracle提供的JDBC jar包中找到),此类实...

weixin_33208553的博客 1555

JDBC 驱动加载原理解析

1、JDBC概念 1.1 什么是 JDBC JDBC 一般指 Java 数据库连接,(Java Database Connectivity,简称为 JDBC)。是 Java 语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了比如查询、更新数据库中数据的方法,我们常说的 JDBC 是面向关系型数据库的。 1.2 JDBC 基本结构图 一般情况下,在 application 中进行数据库连接,调用 JDBC 接口,首先需要将指定的 JDBC 驱动实现加载到 jvm 中,然后再进行使用,基本的结构图如

思想累积的博客 1712

jdbc驱动加载过程

使用jdbc创建数据库连接时,业务代码一般需要执行以下代码: Class.forName("com.mysql.jdbc.Driver");//mysql驱动 Connection conn= DriverManager.getConnection("jdbc:mysql://ip:3306/db","user","pwd"); 接下来我们以mysql驱动为例,研究jdbc驱动是如何工作的。 1、驱动加载分析: 1)Class.forName(“com.mysql.jdbc.Driver”):

赶路人儿 2675

jdbc加载驱动 java_JDBC 驱动加载过程

JDBC 驱动加载过程概述一般情况下,在应用程序中进行数据库连接,调用 JDBC 接口,首先要将特定厂商的 JDBC 驱动实现加载到系统内存中,然后供系统使用。基本结构图如下:驱动加载入内存的过程这里所谓的驱动,其实就是实现了 java.sql.Driver 接口的类。如 oracle 的驱动类是 oracle.jdbc.driver.OracleDriver.class(此类可以在 oracle...

weixin_29819639的博客 535

java加载jdbc驱动,加载JDBC驱动

我们平时在连接数据库时需要加载驱动,通常做法是将JDBC驱动程序放在类路径中的某个位置,然后用Class.forName()查找并加载驱动程序。这也就意味着要么将驱动程序打包到jar中,要么将驱动程序粘贴到某个地方(可能也将其解包),要么修改类路径。但是为什么不使用URLClassLoader和class.forName()的重载来指定类加载器呢?因为DriverManager将拒绝使用一个不能未...

weixin_39897015的博客 496

JDBC驱动为什么没加载

使用Class.forName加载驱动 使用JDBC连接数据库的时候,需要先加载驱动。可以通过Class.forName声明要加载驱动加载这个词在这里其实不太明确,因为Class.forName不只是把类加载到了内存中,还会初始化(static块中的代码会被执行)。注册驱动其实就发生在 static 块中。比如mysql驱动com.mysql.cj.jdbc.Driver static { ...

zq812193195的博客 1636

JDBC加载驱动过程源码分析

JDBC 4.0开始,如果你使用的是符合SPI的JAR包,那么你可以省略Class.forName()这一步骤。驱动将通过SPI自动被发现和加载

2025年写100篇文章 745

JDBC驱动加载全过程

最近学习了JDBC,于是决定今天写一篇文章聊聊java是如何进行驱动加载的。 第一次看到JDBC这个东西的时候,就猜到JDBC应该是Java DataBase Connection的缩写,作用应该就是让java和数据库取得连接,真正开始学的时候,发现正如我猜想的那样,JDBC就是Java应用程序和数据库之间的一道桥梁,唯一猜的不对的就是它是Java DataBase Connectivity的缩

liuyang_520的博客 1万+

JDBC 驱动加载

最初接触JDBC的时,我是这样加载JDBC驱动的 try { Class.forName("com.mysql.cj.jdbc.Driver"); con=DriverManager.getConnection("jdbc:mysql://localhost:3306/experment1?serverTimezone=Hongkong","root","xxx"); statement=con.createStatement(); } catch (ClassNotFoundExc

藏经阁 530

java加载jdbc驱动_java加载jdbc驱动三种方式的比较

,第二种方法不可以的,它一定要有jdbc驱动才可以通过编译,这样对我们的程序就有很多的不好之处,为程序换数据库会带来麻烦,并且,Driver类中就有一个静态的代码块,只要我们执行了Driver类中的静态代码块,并把驱动的实例放入到Drivers的一个数组列表中,我们再调用方法registerDrever就相当于又向drivers列表中放了一次driver驱动,意思是加载了两次驱动,虽然这并不影响...

weixin_39654436的博客 911

(初学)JDBC及其加载驱动的两种方式

1、 什么是JDBC?          JAVA DataBase Connectivity 简称JDBC ,是java连接访问数据库的一项技术。JDBC定义了一套标准接口,即访问数据库的通用API,不同的数据库厂商根据各自数据库的特点去实现这些接口。 2、JDBC工作原理   &nb...

qq_45556278的博客 2733
上一篇: 基础Html学习
下一篇: Java基础语法
雨琨
博客等级 码龄8年 8粉丝 64原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值