前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JDBC(简介、常用组件)

JDBC(简介、常用组件)

作者头像
全栈开发日记
发布2022-05-12 21:33:06
6640
发布2022-05-12 21:33:06
举报
文章被收录于专栏:全栈开发日记全栈开发日记

目录:

简介 常用组件 DriverManager Driver Connection Statement CallableStatment PreparedStatmenet ResultSet ResultSetMetaData SQLException

简介

JDBC是Java提供给用户来处理数据库业务的API。

jdbc是一种规范,他提供了一套接口,允许以一种可移植的方式访问数据库底层。只能操作关系型数据库。

常用组件

DriverManager

用来管理数据库驱动,可以在项目加载的驱动列表中读取最近的一条驱动程序(可以在项目中多次去使用 Class.forName来驱动,如果Class.forName加载的是同一个驱动,DriverManager会使用最后一次加载的驱动)

Class.forName 只需要执行一次就可以。

所以可以用Java中静态代码块的特性来加载驱动。

代码语言:javascript
复制
static{     
     Class.forName("com.mysql.cj.jdbc.Driver"); 
}

以下加载驱动方式不推荐:

代码语言:javascript
复制
Class clazz = Class.forName("");

常用方法:(第一行为返回值)

Driver

是由第三方数据库厂商提供,一般直接由DriverManager管理,每个驱动程序类必须实现的接口。

Connection

用于获取java和数据库会话的连接信息。

与特定数据库的连接(会话)。在连接上下文中执行 SQL 语句并返回结果。 Connection对象的数据库能够提供数据表所支持的 SQL 语法、存储过程、此连接功能等等的信息。

方法:

Statement

用于执行静态 SQL 语句并返回它所生成结果的对象。

注意:SQL语句只能为静态SQL语句,包含java中字符串拼接都属于静态SQL

方法:

静态SQL语句存在SQL注入漏洞,可利用字符串拼接来影响登录的密码正确性判断。

如:(以下SQL代码中用户名随意都可以通过没密码验证,成功登录)

代码语言:javascript
复制
String upwd="'or'a'='a";//利用sql静态注入漏洞
String sql="select * from t_user where username='"+user+"'and pwd='"+upwd+"'";

CallableStatment

解决上面静态SQL语句注入漏洞。

用于执行存储过程,{call 存储过程名称 (?,?)},参数必须使用占位符,因为对于有返回值的存储过程我们需要通过占位符来注册返回值。

完整代码实例:

PreparedStatmenet

表示预编译的 SQL 语句的对象。动态SQL,在静态SQL的基础上增加?作为占位符,占位符的复制,包含了数据类型,如果是String类型的,会自动拼接单引号。

方法:

ResultSet

表示数据库查询结果集的数据表(二维表)。既保持了查询结果的各行的数据,同时还保持了查询结构的表结构(每列的列名和列的类型)

ResultSet对象具有指向其当前数据行的光标。

最初,光标被置于第一行之前,next方法将光标移动到下一行;

因为该方法在 ResultSet 对象没有下一行时返回 false ,

所以可以在while循环中使用它来迭代结果集。

可以在while循环中的rs为当前行的数据。

常常被用在用户登陆或者注册时,查找数据库中是否有该数据。

代码语言:javascript
复制
Boolean b=false;
while(rs.next()) {
        b=true;//查询数据库中是否有这个元素
}

方法:

ResultSetMetaData

可用于获取关于 ResultSet 对象中列的类型和属性信息的对象。

方法:

SQLException

提供关于数据库访问错误或其他错误信息的异常。

常常在编写关于处理数据库语句是时抛出异常。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-06-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈开发日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • DriverManager
  • Driver
  • Connection
  • Statement
  • CallableStatment
  • PreparedStatmenet
  • ResultSet
  • ResultSetMetaData
  • SQLException
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档