精华内容
下载资源
问答
  • 为什么要编写JDBCUtils这个类? 在学习代码过程中,有一个很重要,但是几乎人人都知道思想,那就是不要重复造轮子。这个思想体现在编程学习各个方面,其本质就是减少重复劳动,省下时间来做更多不重复事情...

    为什么要编写JDBCUtils这个类?

    在学习代码的过程中,有一个很重要,但是几乎人人都知道的思想,那就是不要重复造轮子。这个思想体现在编程学习的各个方面,其本质就是减少重复劳动,省下时间来做更多的不重复的事情。小到一个方法,一个类,大到一个jar包,一个框架,都有体现。
    在用JDBC连接数据库时,一般都会有这么几步

    //      1.注册驱动,jar包里的META-INF下面的services下的Java.sql.driver有,这句也可以省略
            Statement stmt = null;
            Connection conn = null;
            try{
                Class.forName("com.mysql.cj.jdbc.Driver");
    //          2.定义sql
                String sql = "insert into account values(null,'heima',3133)";
    //          3.获取connection对象
                conn = DriverManager.getConnection("jdbc:mysql:///test?serverTimezone=UTC", "root", null);
    //          4.获取执行sql的对象
                stmt = conn.createStatement();
    //          5.执行sql
                int count = stmt.executeUpdate(sql);
    //           6.处理结果
                System.out.println(count);
                if (count>0){
                    System.out.println("添加成功");
                }else{
                    System.out.println("添加失败");
                }
            }catch (ClassNotFoundException e){
                e.printStackTrace();
            }catch(SQLException e){
                e.printStackTrace();
            }finally {
    //            先判断stmt是否为空,之后再执行close方法释放资源
                if(stmt !=null) {
    
                    try {
                        stmt.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
    //            同理
                if (conn != null){
                    try {
                        conn.close();
                    } catch (SQLException e) {
                        e.printStackTrace();
                    }
                }
    
            }
    
    

    显然,其中有很多步骤是每次连接数据库都需要去做的,代码量还不少,所以基于不重复造轮子的思想,通过对这些代码的抽取,JDBCUtils工具类就诞生了。

    编写JDBCUtils类

    1. 分析,在上述代码中,哪些是每次连接数据库必须的,复用性高的。
      • 注册驱动是每一次连接数据库都必须的,虽然从MySQL5.x版本之后都可以省略,但是为了兼容低版本,提高代码的兼容性,这一步也应该写
      • 获取connection对象也是每一步必须的,且变化不大
      • 之后的sql语句,执行sql,处理结果都是根据不同的业务有不同的需求
      • 最后是释放资源,操作大体上都一样,也是需要抽取的部分
    2. 实现,如何按照上面的操作抽取代码呢?
      • 先看代码吧
     static {
            try {
    //        1.创建Properties集合类
                Properties pro = new Properties();
    //        2.加载文件
    //            获取src路径下的文件的方式-->ClassLoader
                ClassLoader classLoader = JDBCUtilsDemo.class.getClassLoader();
                URL res = classLoader.getResource("jdbc.properties");
                String path = res.getPath();
                pro.load(new FileReader(path));
    
    //        3.获取数据,赋值
                url =pro.getProperty("url");
                user = pro.getProperty("user");
                driver = pro.getProperty("driver");
                password = pro.getProperty("password");
    //        4.注册驱动
                Class.forName(driver);
            } catch (IOException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
    
        }
        /**
         * 获取连接对象
         * @return 连接对象
         */
        public static Connection getConnection(){
            Connection conn = null;
            try {
                conn = DriverManager.getConnection(url,user,password);
            } catch (SQLException e) {
                e.printStackTrace();
            }
            return conn;
        }
    
        /**
         * 释放资源
         * @param stmt
         * @param conn
         */
        public static void close(Statement stmt, Connection conn) {
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    
        }
    
        public static void close(Statement stmt, Connection conn, ResultSet rs) {
            if (stmt != null) {
                try {
                    stmt.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (conn != null) {
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
    	}
    
    • 对于获取connection对象,有一个问题,即使你抽取出来,用一个方法Connection getConnection(String url,String user,String password)封装,实际上调用的时候和DriverManager.getConnection(url,user,pawwsord)相比,这种简化没有任何意义。
    • 但是如果直接把数据库的参数封装在代码中,又降低了工具类的复用性,于是我们希望,不用频繁地传递参数,修改参数的时候又不修改工具类里的代码,所以我们使用了配置文件的方法,将参数存储在配置文件中,然后用Java封装好的方法读取配置文件中的参数。
      配置文件放在src目录下,文件名为jdbc.properties.以后只需要修改配置文件,就能连接到目标数据库
    url=jdbc:mysql://localhost:3306/test?serverTimezone=UTC
    user=root
    password=
    driver=com.mysql.cj.jdbc.Driver
    
    • 之后是释放资源,两个重载方法,可以释放不同情况下的资源。

    感觉讲的不是很充分,有问题希望评论指出,作文文章的补充。

    展开全文
  • 我们先用jdbc编写一个例子: 第一步:建表 第二步:导入Mysqljia-mysql-connector-java-5.1.7.jar; 第三步:编写jav程序 package cn.itcast.mybatis.jdbc; import java.sql.Connection; import ...

     

    我们先用jdbc去编写一个例子:

    第一步:建表

    第二步:导入Mysql的jia包-mysql-connector-java-5.1.7.jar;

    第三步:编写jav程序

    package cn.itcast.mybatis.jdbc;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    
    
    public class jdbc {
    
        public static void main(String[] args) {
            Connection connection = null;
            PreparedStatement preparedStatement = null;
            ResultSet resultSet = null;
            
            try {
                //加载数据库驱动
                Class.forName("com.mysql.jdbc.Driver");
                
                //通过驱动管理类获取数据库链接
                connection =   DriverManager.getConnection("jdbc:mysql://localhost:3306/mybaits?characterEncoding=utf-8", "root", "root");
                //定义sql语句 ?表示占位符
            String sql = "select * from user where username = ?";
                //获取预处理statement
                preparedStatement =  connection.prepareStatement(sql);
                //设置参数,第一个参数为sql语句中参数的序号(从1开始),第二个参数为设置的参数值
                preparedStatement.setString(1, "王五");
                //向数据库发出sql执行查询,查询出结果集
                resultSet =  preparedStatement.executeQuery();
                //遍历查询结果集
                while(resultSet.next()){
                    System.out.println(resultSet.getString("id")+"  "+resultSet.getString("username"));
                }
            } catch (Exception e) {
                e.printStackTrace();
            }finally{
                //释放资源
                if(resultSet!=null){
                    try {
                        resultSet.close();
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                if(preparedStatement!=null){
                    try {
                        preparedStatement.close();
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
                if(connection!=null){
                    try {
                        connection.close();
                    } catch (SQLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }
    
            }
    
        }
    
    }

    运行结果:正确的。

     

     

     

    总结:上面的jdbc编程。发现有下面一个问题。

    1、数据库连接,使用时就创建,不使用立即释放,对数据库进行频繁连接开启和关闭,造成数据库资源浪费,影响 数据库性能。

    设想:使用数据库连接池管理数据库连接。

     

    2、将sql语句硬编码到java代码中,如果sql 语句修改,需要重新编译java代码,不利于系统维护。

    设想:将sql语句配置在xml配置文件中,即使sql变化,不需要对java代码进行重新编译。

     

     

    3、向preparedStatement中设置参数,对占位符号位置和设置参数值,硬编码在java代码中,不利于系统维护。

    设想:将sql语句及占位符号和参数全部配置在xml中。

     

    4、从resutSet中遍历结果集数据时,存在硬编码,将获取表的字段进行硬编码,,不利于系统维护。

    设想:将查询的结果集,自动映射成java对象。

                                                                                                                                                                          

     

     

    因为上面的问题,我们要学习Mybatis来解决上面的问题。所以接下来的学习我们都要带着问题来学习mybatis。

     

     

        这个系列内容都来自于传智播客。

     

    展开全文
  • JDBC

    2018-01-06 20:53:37
    JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句Java API,可以为多种关系数据库提供统一访问,它由一组Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级工具和...

           JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级的工具和接口,使数据库开发人员能够编写数据库应用程序,同时,JDBC也是个商标名。

    首先要导入jar包


    1.注册JDBC驱动程序

     Class.forName("com.mysql.jdbc.Driver");
    2.打开一个连接,这需要使用DriverManager.getConnection()方法来创建一个Connection对象,它代表一个物理连接的数据库,如下所示:

            String mysqlurl = "jdbc:mysql://localhost:3306/user";
            String username = "root";
            String password = "root";
            Connection con = DriverManager.getConnection(mysqlurl, username, password);
    注意:user是你的数据库名字。

    3.创建SQL语句声明

     PreparedStatement pstmt=con.prepareStatement(sql);
    

    Statement sql_statement = con.createStatement();
    这两种都可以就是添加数据的方式不一样。下面我就用第一种方式(PreparedStatement继承了Statement),向数据库里添加数据。对数据库的操作主要有增删改查,一般情况我们都用图形化界面创建好了数据库,所以我们只需进行添加数据,删除数据,更新数据等操作。下面我就写一下我写的向已经建好的表里面添加数据。

    第一步:先写好SQL语句

    String sql="insert into info (name,comment,money,taste,environment,service,address,iphone,Buhours ) values (?,?,?,?,?,?,?,?,?)";
    注意:第一个括号里面的是你建好的表里面的字段必须一一对应,后面的?是用来占位的,必须与前面一一对应,前面有几个字段后面就有几个?。

    第二步,创建PreparedStatement来获取数据库链接,执行SQL语句

    PreparedStatement pstmt=con.prepareStatement(sql);
    第三步:就是把数据写到数据库里面(下面的代码我是在前面就已经捕捉好了字符串,详情见上一篇博客)

            pstmt.setString(1, name);
            pstmt.setString(2, comment);
            pstmt.setString(3, money);
            pstmt.setString(4, taste);
            pstmt.setString(5, environment);
            pstmt.setString(6, service);
            pstmt.setString(7, address);
            pstmt.setString(8, iphone);
            pstmt.setString(9, Buhours);
    第四步:就是执行PreparedStatement的操作更新数据库

    pstmt.executeUpdate();
    第五步:关闭PreparedStatement和数据库链接

    pstmt.close();
    con.close();











    展开全文
  • 用JDBC实现新增数据

    2020-09-18 15:29:20
    各个数据库提供商会根据这套规范(接口)编写相关实现类,封装成一个 jar 户下载使用。下面我就和大家分享一下怎么用JDBC新增数据。 这个在写代码之前一定先引入这个插件,不然就会报错,实现不了功能。...
    开发工具与关键技术:eclipse与 JDBC
    作者:刘华叶
    撰写时间:2020年9月6日
    

    JDBC是专门负责连接数据库进行数据操作。各个数据库提供商会根据这套规范(接口)编写相关的实现类,封装成一个 jar 包供用 户下载使用。下面我就和大家分享一下怎么用JDBC新增数据。
    在这里插入图片描述

    这个在写代码之前一定要先引入这个插件,不然就会报错,实现不了功能。另外我们使用JDBC来编写语句,一般分为五个步骤:

    1. 加载驱动 2.连接数据库 3.执行语句 4.返回结果 5.关闭链接
      下面我在和大家详细解释一下:
      在这里插入图片描述

    首先去开发软件里面创建一个方法,然后获取加载的驱动的jar包,通过DriverManger打开数据库的链接,在获取数据库的用户名和密码,然后在用sql语句获取表的字段,通过Connection对象创建PreparedStatement对象来执行sql语句或者用Statement也可以,不过,这里一般都使用PreparedStatement这个方法。
    (因为使用Statement容易出错,而PreparedStatement需要根据sql语句 创建PreparedStatement。还能够通过设置参数,指定相应的值,而不是 Statement那样使用字符串拼接)。
    另外还要把释放资源的方法,放到上面,获取静态资源,然后在执行并返回结果。然后在设置要新增的字段的信息,这里要从索引1开始。
    在这里插入图片描述

    然后在使用executeUpdate执行语句,但是它不能执行查询语句, executeUpdate的返回值是int,表示有多少条数据 受到了影响。最后在去释放资源,输出结果就行了。
    在这里插入图片描述

    然后执行一下看看效果,sql语句显示新增成功了,接着在去数据库看看有没有这条数据。
    在这里插入图片描述

    数据库里面也新增出来了,这就证明新增成功了。

    展开全文
  • 编写一共DbUtil类,实现连接池来管理数据库连接。(要求数据库连接参数存在在外部properties文件中以方便修改) 今天在写Java作业时,遇到了通过池连接数据库 池连接作用: 因为每次创建一个数据库链接都...
  • SQL——JDBC

    2020-09-10 14:17:46
    JDBC SUN公司为了简化开发人员的...编写JDBC需要会用的包 java.sql包 javax.sql包 这两个包是自带的,下面的首先下载的 mysql.connector.java说明说明版本的的SQL下载说明版本的以下的 学习地址https://www.bilibi
  • 它由一组Java语言编写的类和接口组成。 首先,我们知道想访问数据库,一般需要这样: 身份验证,登录到数据库服务器,跟服务器连接上; 发送一条SQL命令; 解析结果集; 断开连接。 这些,都是我们通过...
  • Spring_基于Spring的JDBC

    2018-09-16 16:36:32
    Spring的JDBC的有什么? (打X表示事) 使用了Spring的JDBC,我们只需要负责:配置数据库连接参数,定义SQL(包含设置参数),处理结果集。   Spring的JDBC大大简化了开发人员对数据库操作,...
  • 关于jdbc的通用查询方法,以及获取结果集RsultSet处理 第一步:先导入jar ...因为以后经常用到jdbc各种方法,所以我直接用jdbc工具类方式 首先我们需要连接数据库需要什么,也就是进入数据库
  • JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句Java API,可以为多种关系数据库提供统一访问,它由一组Java语言编写的类和接口组成。是Java访问数据库标准规范。 通俗来讲,JDBC...
  • JDBC链接数据库五种方法

    千次阅读 2018-03-29 09:26:36
    1.用JDBC连接Oracle数据库,在连接数据库之前把Oracle数据库服务都开启、还有在所在工程中加载驱动jar,有两种方法:1)DBUtil来编写工具类 2)properties文件来编写连接参数 3)dbcp连接池连接数据库2...
  • Eclipse编写Java程序连接mysql数据库,在注册数据库驱动时,无论Class.forName("com.mysql.jdbc.Driver"); 或者 Class.forName("com.mysql.cj.jdbc.Driver"); ,运行是都提示java.lang.ClassNotFoundException. ...
  • **JDBC(Java Data Base Connectivity,Java数据库连接)**是一种用于执行SQL语句Java API,可以为多种关系数据库提供统一访问,它由一组Java语言编写的类和接口组成。 JDBC连接Oracle代码如下(首先导入第...
  • JDBC连接数据库

    2017-09-27 15:59:00
    JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句Java API,可以为多种关系数据库提供统一访问,它由一组Java语言编写的类和接口组成。 1.使用JDBC之前首先在不同数据库官网下载...
  • JDBC分页查询

    2020-12-17 16:50:54
    测试是否导入JDBC包 创建Connection,连接数据库 声明用于编写sql字符串 创建用于执行sqlStatement 若有返回结果,创建用于存储结果ResultSet next()方法遍历ResultSet 为读取每个字段声明变量,并...
  • 可参见之前文章:准备驱动包要用JDBC连接MySQL,需要一个驱动:可以去这里下载(其实完整安装MySQL后可以在安装路径中找到这个):解压后将其中mysql-connector-java-XXX-bin.jar文件加入到Web Projectlib中...
  • 浅谈JDBC编程

    2019-09-22 23:15:02
    1.为什么要用JDBC 数据库是程序不可或缺一部分,每一个网站和服务器建设都需要数据库。对于大多数应用程序员(此处不包含数据库开发人员)来说,我们更多不是在DBMS中对数据库进行操纵,而是在我们编写的...
  • Jdbc--概述

    2016-09-22 22:18:47
    它由一组Java语言编写的类和接口组成简单说,通过jdbc可以让我们通过java语言来执行sql语句并操作数据库example:注意:在进行JDBC的编写先将相关jar(连接数据库jar导入。// 1.注册驱动...
  • 详细内容要用JDBC连接MySQL,需要一个驱动:可以去这里下载(其实完整安装MySQL后可以在安装路径中找到这个):http://www.mysql.com/products/connector/解压后将其中mysql-connector-java-XXX-bin.jar文件加入...
  • JDBC连接MySQL数据库

    2015-06-13 14:52:03
    JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句Java API,可以为多种关系数据库提供统一...首先,下载相应数据库驱动jar,修改数据库信息,再利用JDBC连接数据库。 创建一个以
  • JDBC配置及基本操作

    2019-01-19 10:51:53
    JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句Java API,可以为多种关系数据库提供统一访问,它由一组Java语言编写的类和接口组成。 首先添加mysql-connector-java jar 直接在...
  • week09_day05_JDBC

    2020-06-05 00:00:11
    它由一组 Java 语言编写的接口和类组成,位于 java.sql 和 javax.sql 下面。 JDBC 需要连接驱动。客户端和 DBMS 进行通信,需要满足一定通信数据格式 (协议),协议是由数据库厂商制定,不同DBMS有不同...
  • JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句Java API,可以为多种关系数据库提供统一访问,它由一组Java语言编写的类和接口组成。JDBC提供了一种基准,据此可以构建更高级工具和...
  • JDBC学习之一

    2008-04-18 13:31:00
    最近开始看J2EE相关书籍.首先学习就是JDBC(前面几章... 使用是myeclipse编写的(我对Myclipse功能不熟悉,还是像eclipse一样,哈哈)运行JDBC程序得需要jar驱动. 对应哪个DBMS(也就是sql server 2000
  • javaweb—JDBC连接数据库

    千次阅读 2016-06-16 20:14:51
    定义:JDBC是一种用于执行SQL语句Java API,可以为多种关系数据库提供统一访问,它由一组Java语言编写的类和接口... 注意先导入mysql连接驱动     下面还有另以一种连接方式:利用驱动管理器类连接数
  • Java操作数据库方式一JDBC使用详解

    千次阅读 2018-06-16 21:21:18
    ##概述JDBC(Java Data ...可以为多种关系数据库提供统一访问,它由一组Java语言编写的类和接口组成。##准备工作在使用JDBC连接数据库之前,首先有数据库,数据库创建表。我数据库信息如下:a,数据库类型:...
  • 它由一组 Java 语言编写的接口和类组成,位于 java.sql 和 javax.sql 下面。 JDBC 需要连接驱动。客户端和 DBMS 进行通信,需要满足一定通信数据格式 (协议),协议是由数据库厂商制定,不同DBMS有不同...
  • JDBC】DBCP连接池

    2021-02-08 02:30:17
    一、DBCP连接池 DBCP也是一个开源的连接池,是Apache成员之一,在企业开发中也比较常见,tomcat内置的连接池。...在DBCP包中提供了DataSource接口的实现类,我们要用的具体的连接池 BasicDataSource
  • 这里列出jar只会有多无少,有些是后续开发用到,大家参考着 开发思路: **用户通过HTML页面发送请求给servlet层—>servlet层调用service方法–>service层调用DAO层方法–>调用Bean层对应数据库...

空空如也

空空如也

1 2 3 4 5 6
收藏数 109
精华内容 43
关键字:

编写jdbc要用的包