目录:

简介

常用组件

DriverManager

Driver

Connection

Statement

CallableStatment

PreparedStatmenet

ResultSet

ResultSetMetaData

SQLException

简介

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

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

常用组件

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

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

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

代码语言:javascript代码运行次数:0运行复制static{

Class.forName("com.mysql.cj.jdbc.Driver");

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

代码语言:javascript代码运行次数:0运行复制Class clazz = Class.forName("");常用方法:(第一行为返回值)

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

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

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

方法:

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

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

方法:

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

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

代码语言:javascript代码运行次数:0运行复制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代码运行次数:0运行复制Boolean b=false;

while(rs.next()) {

b=true;//查询数据库中是否有这个元素

}方法:

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

方法:

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

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

Copyright © 2088 俄罗斯世界杯主题曲_世界杯下一届 - pin8pin8.com All Rights Reserved.
友情链接