概念:

    JDBC (Java DataBase Connectivity):Java数据库连接,Java语言操作数据库。是官方(sun公司)定义的一套操作所有关系型数据库的规则, 即接口。各个数据库厂商去实现这个接口,提供数据库驱动jar包。我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类。

 

实现步骤:

1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar

    1.1.复制mysql-connector-java-5.1.37-bin.jar到项目的libs目录下

    1.2.右键-->Add As Library

2. 注册驱动

3. 获取数据库连接对象 Connection

4. 定义sql

5. 获取执行sql语句的对象 Statement

6. 执行sql,接受返回结果

7. 处理结果

8. 释放资源

 

具体代码实现:

  • 注册驱动

Java程序连接数据库的驱动jar包放哪 数据库驱动jar包怎么用_sql

  • 获取数据库连接对象(Connection)    
  • Java程序连接数据库的驱动jar包放哪 数据库驱动jar包怎么用_sql_02


  • 定义SQL语句

Java程序连接数据库的驱动jar包放哪 数据库驱动jar包怎么用_sql_03

  • 获取执行SQL语句对象的(Statement)

Java程序连接数据库的驱动jar包放哪 数据库驱动jar包怎么用_数据库连接_04

  • 执行SQL,返回结果

Java程序连接数据库的驱动jar包放哪 数据库驱动jar包怎么用_sql_05

  • 释放资源

Java程序连接数据库的驱动jar包放哪 数据库驱动jar包怎么用_sql_06

Java程序连接数据库的驱动jar包放哪 数据库驱动jar包怎么用_数据库连接_07

 

详解各个对象:

  • DriverManager:驱动管理对象

         功能:

                1、注册驱动:告诉程序使用哪一个数据库驱动jar

                      * 代码注意:在使用Class.forName("com.mysql.cj.jdbc.Driver")时,会提示报错,需要使用try或throw

Java程序连接数据库的驱动jar包放哪 数据库驱动jar包怎么用_mysql_08

                      另外:MySQL5之后的驱动jar包可以省略注册驱动的步骤

                2、获取数据库连接:

                    * 参数:

                            -- url:指定连接的ip地址和端口

                                        jdbc:mysql://IP地址:端口/数据库名?serverTimezone=时区

                                        注意:如果连接的是本机mysql服务器,且端口为3306,则url可以简写为:

                                                   jdbc:mysql:///数据库名?serverTimezone=时区

                            -- user:用户名

                            -- password:密码

                    * 对象实现

                            Connection 对象名 = DriverManager.getConnection( url, user, password )

 

  • Connection:数据库连接对象

         功能:

                1、获取执行sql的对象:

                      Statement 对象名 = 数据库连接对象.createStatement( )

                      PreparedStatement 对象名 = 数据库连接对象.prepareStatement(String sql) 

                     

                2、管理事务:

                      开启事务:setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务

                      提交事务:commit( )

                      回滚事务:rollback( )

 

  • Statement:执行sql的对象

         功能:执行sql

                1、boolean execute(String sql):可以执行任意的sql,返回执行成功与否的布尔值

                2、int executeUpdate(String sql):可以执行DML(insert, delete, update)语句,DDL(create, alter, drop)语句,返回影响的行数,如果行数大于0,说明执行成功,否则失败

                3、ResultSet  executeQuery(String sql):执行DQL(select)语句

 

  • ResultSet:结果集对象,封装了查询的结果

         方法:

                1、boolean next( ):判断当前行是否是最后一行末尾,如果是,返回false,否则返回true

                2、getXxx(参数):获取指定列的数据

                     * 其中,Xxx有如下类型:

                            -- int getInt( )

                            -- String getString( )

                            -- boolean getBoolean( )

                            -- date getDate( ) 等等

                            可以参考下表进行变换

 

 

                    * 参数:

                            -- int类型:代表列的索引,从1开始,比如说想获取第一列的数据,用getString(1)

                            -- String类型:代表列(字段)的名称,比如:getint("calary")

                        注意:想要获取的列和使用的函数类型要尽量保持一致。

 

  •  PreparedStatement:执行sql的对象,是Statement的子接口

            1. SQL注入问题:在拼接sql时,有一些sql的特殊关键字参与字符串的拼接。会造成安全性问题

                1. 输入用户随便,输入密码:a' or 'a' = 'a

                2. sql:select * from user where username = 'fhdsjkf' and password = 'a' or 'a' = 'a'

 

            2. 解决sql注入问题:使用PreparedStatement对象来解决

            3. 预编译的SQL:参数使用?作为占位符

            4. 步骤:

                1. 导入驱动jar包 mysql-connector-java-5.1.37-bin.jar

                2. 注册驱动

                3. 获取数据库连接对象 Connection

                4. 定义sql

                * 注意:sql的参数使用?作为占位符。 如:select * from user where username = ? and password = ?;

                5. 获取执行sql语句的对象 PreparedStatement  Connection.prepareStatement(String sql)

                6. 给?赋值:

                    * 方法: setXxx(参数1,参数2)

                        * 参数1:?的位置编号 从1 开始

                        * 参数2:?的值

                7. 执行sql,接受返回结果,不需要传递sql语句

                8. 处理结果

                9. 释放资源

            

Java程序连接数据库的驱动jar包放哪 数据库驱动jar包怎么用_mysql_09

 

            5. 注意:后期都会使用PreparedStatement来完成增删改查的所有操作

                1. 可以防止SQL注入

                2. 效率更高