栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JDBC---学习回顾

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JDBC---学习回顾

目录

JDBC一般操作步骤

DriverManager (驱动管理类) 

Connection

Statement 

ResultSet (结果集)

PreparedStatement 

数据库连接池


概述:JDBC是Java语言提供的操作关系型数据库的一套API。全称(Java DataBase Connection)java数据库连接。

本质:Java官方定义了一套操作所有关系型数据库的规则(接口),各个数据库厂商去实现这套接口,并提供出实现后的驱动jar包。我们就是要学习这套规则(接口),其真正执行的是驱动jar包中的实现类。 

JDBC一般操作步骤

准备工作:在项目模块下创建lib文件夹,将mysql-connector-java-5.1.48.jar驱动架包添加进去。并添加项目依赖。


DriverManager (驱动管理类) 

作用1:注册驱动  ---》  public static void registerDriver(Driver driver)

             对于JDBC的第一步操作 Class.forName("com.mysql.jdbc.Driver)

             查看Driver类源码:

                                             

            注:mysql 5.0开始的驱动包 可以省略注册驱动这一步骤。

 作用2:获取连接  ---》 public static connection getConnection(String url, String user, String password)

  • url:连接数据库的路径        

               语法:jdbc:mysql://ip地址:端口号/数据库名?键值对参数1&键值对参数2...

                          例如:jdbc:mysql:/127.0.0.1/db1

               注:①如果连接的是本机mysql服务器,并且mysql服务器默认端口为3306,此时url可以                            简化书写--> jdbc:mysq///db1

                      ②可以配置useSSL=false参数,禁用安全方式,解决警告提示。

  • user:用户名 (如:root)
  • password:密码(如:000000)

Connection

作用1:获取sql语句的执行对象

  • public static Statement createStatement();        创建普通的sql执行对象
  • public static PreparedStatement prepareStatement(String sql);    获得预编译sql的执行对象,可以防止sql注入问题

作用2: 事物管理

  • 开启事物:setAutoCommit(boolean autoCommit);  为true表示自动提交事物,为false表 示手动提交事务(开启事物)
  • 提交事物:commit()
  • 回滚事物:roolback()

    补:java对于异常一般处理方式:

                             

Statement 

作用:执行sql语句

成员方法:

  • public  int  executeUpdate(String sql);    执行DML、DDL语句
  • public  ResultSet  executeQuery(String sql);   执行DQL语句,返回ResultSet结果集对象

 ResultSet (结果集)

作用:封装DQL查询语句的结果

成员方法: 

  • public  boolean  next();     将光标从当前位置移动到下一位置,并判断是否为有效行,为                                                   true表示有效,为false表示无效。

                        

  • public  xxx  getXxx(参数);  获取数据  

                                        参数形式一:int:列的编号,从1开始。 

                                        参数形式二:String:列的名称

PreparedStatement 

作用1:预防sql注入问题。

SQL注入:通过输入来修改事先定义好的SQL语句,用以达到执行代码对服务器进行攻击的方法。

                  存在原因:sql语句中存在拼字符串的现象

                  例如:登录系统中..

                   解决SQL注入问题:sql语句的执行对象,不再用Statement对象,而是用                                                                         PreaparedStatement对象

步骤:1、获取PrepareStatement对象

                        ●在定义sql语句时参数全部使用 ?暂时替代

                           如:String sql = "select * from user where username = ? and psw = ?";

                        ●通过Connetion连接对象获取PreparedStatement对象,并传入sql语句

                           如: PreparedStatement  pstmt = conn.preparedStatement(sql);

          2、设置参数

                       如:pstmet.setXxx(参数1,参数2);

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

                              参数2:对应此位置?编号的值

          3、执行Sql

                      如:pstmt.executUpdate()/ executQuery();

                      注:不需要像Statement那样再传入sql语句了。


作用2: 预编译sql语句,性能高。

原理:①在获取PreparedStatement对象时,将Sql语句包发送给mysql服务器,进行检查编译

           ②执行时就不用进行这一步骤了,速度更快。

           ③如果sql模板一样,则只需要进行一次检查、编译、效率更高。

          

 注:PreparedStatement预编译功能默认是关闭的,需要手动开启。在获取连接url参数时 添加

        useServerPrepStmts=ture

数据库连接池

概述:数据库连接池是一个容器,负责分配管理数据库的连接(类似于线程池)。这个容器中存在一些长期存活的Conntion对象,当某个java程序需要获取连接对象时就直接从这个容器中获取,当此程序结束后它所占用的Conntion对象不会释放掉而是还回到容器中来,从而实现了资源复用。

 实现:Java提供了数据库连接池接口,由第三方组织实现接口。

            获取连接对象方法:Connection  getConnection()

            常见数据库连接池:Connection、c3p0、Druid(德鲁伊)

            Druid:阿里巴巴开源的数据库连接池,功能强大,性能优秀。目前是java使用最多的数据                          库连接池。

Driud使用步骤:

        ①导入druid-1.1.12.jar架包。(新建lib文件夹,将架包添加进去并添加依赖)

        ②定义配置文件druid.properties

        ③加载配置文件

                        Properties prop = new Properties();

                        prop.load(new FeilInputStream("路径");

                        注:对于这个路径.有时需要带模块名,有时又不带模块名。具体做法在写路径前先用通用方法System.getProperty("user.dir") 打印一下路径看看,如果打印的路径带了模块名,则参数路径就不加了,否则参数路径要加上模块名。

        ④获取数据库连接池对象

                        DataSource  dataSourct = DruidDataSourceFactory.createDataSource(prop);

        ⑤获取连接

                        Conntion  conn = dataSource.getConnection();

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/836847.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号