JDBC数据库入门一

这篇博客介绍了Java使用JDBC连接数据库的基础步骤,包括加载驱动、设置四大参数、创建Statement和PreparedStatement,以及如何执行增删改查操作。讲解了ResultSet的使用,包括结果集的滚动和元数据获取。还提到了PreparedStatement的预处理原理和JDBC UTILS库的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Java 连接数据库

  • 导jar包:驱动

  • 加载驱动类:Class.forName(“类名”);

  • 给出url,usename,password

  • 使用Drive

jdbc四大参数

  • driverClassName:com.mysql.jdbc.Driver ,mysql jar包的Driver类名路径

  • url:jdbc:mysql://localhost:3306/数据库名

  • username:用户名

  • password:密码

url格式: jdbc:数据库厂商:子协议
子协议由厂商决定的

准备四大参数

加载驱动类

得到Connection

对数据库进行增删改

1.通过Connection对象,createStatement方法创建Statement

2.通过Statement的executeUpdate()发送sql语句,返回的是int类型,表示影响几行数据

对数据库进行查询

返回的是一张表格

1.通过Connection对象,createStatement方法创建Statement

2.通过Statement的executeQuery()发送sql语句,这个必须就是查询sql语句

返回的是结果集,就是一张表

3.解析这个结果集 ResultSet

ResultSet 里面有一个行光标

行光标,默认在 第一行数据的上面 BeforFirst

最后放到最后行数据的下面,AfterLast

结果集ResultSet的next()方法,移动行光标,有返回值,boolean类型,表示移动后的行是否存在

锁定行后,进行读取这一行

ResultSet提供一系列getXXX()方法

get各种类型

比如getInt(1),表示当前行的第1列

可以通过列编号,也可以通过列名称

4.关闭资源

倒关,先得到的对象后关闭,后得到的对象先关闭

re.close

stmt.close

con.close 这个必须要关,不关后果严重

代码规范化

try catch finally

在try 外给出引用的定义

在try内进行对象的实例化

在finally中进行关闭 ,关闭要进行判断 if语句进行判断是否为空

注意:

Connection 最为重要的是获取Statement,Statement stmt = con.creaStatement();

还有不同参数的方法:Statement stmt = con.creaStatement(int,int);这俩个参数用来确定Statement生成的结果集的构成

Statament 最为重要的方法:

  • int execteUpdate(String sql) ,执行更新操作,即 insert,updata ,delete语句等

  • ResultSet executeQuery(String sql),执行查询操作,返回一个ResultSet结果集

  • boolean execute(),这个方法用来这些增删改查所有sql语句,返回布尔类型,表示语句是否有结果。

如果execute()方法执行的是更新语句,那么还要调用int getUpdateCount ()方法获取sql语句所影响的行数

查询语句的话,还需要调用ResultSet getResultSet() 来获取查询结果

ResultSet 结果集

默认的结果集不能滚动,只能下一行 使用next()方法

滚动结果集,下面方法都有

相对的:下一行,上一行,下N行,上N行

绝对的:到N行

没有第0行,从第一行开始

一种是判断光标位置,一种是用来移动光标

获取结果集的元数据

得到元数据:rs.getMetaData(),返回值为ResultSetMetaData

ResultSetMetaData 有 getColumnCount()方法 ,返回ResultSet对象的列数

还有 获取指定列的名称 getColumnName(int collndex)

也可以直接使用ResultSet 的get方法,可以通过索引也可以通过名称访问列

结果集是否是支持滚动的,得从Connection 的createStatement()方法说起,创建的Statement 决定了Statement创建的ResultSet是否支持滚动

结果集的特性

  • 是否可滚动

  • 是否敏感

  • 是否可更新

在使用Connection类的createStatement方法时,就已经确定结果集的特性

createStatement()无参的方法, 生成的结果集就是不可滚动,不敏感,不可更新的

createStatement() 有参的方法:

俩个参数:

第一个参数:

ResultSet.TYPE.FORWARO_ONLY 不滚动

ResultSet.TYPE_SCROLL_INSENSITIVE 滚动结果接,但结果集不会随着数据库的变化而变化

ResultSet.TYPE_SCROLL_SENSITIVE 滚动结果集,敏感的,但是没有会实现这个功能太耗费资源

第二个参数:

CONCUR_READ_ONLY: 结果集是只可读的,不能通过修改结果集来影响数据库

CONCUR_UPDATABLE :结果集可更新的,对结果集的更新能影响数据库

Mysql 默认的就是会创建滚动的结果集,即使是使用的无参的Connection的creaStatement方法

PreparedStatement

  • 是Statement 接口的子接口

  • 可以防SQL攻击

  • 提高代码的可读性,可维护性

  • 提高效率

SQL攻击

sql语句,我们输入的字符串, 会导致了sql语义变化

采用SQL模板:所有的参数用?替代

调用Connection的方法 得到PreparedStatement 对象

所以说,使用PreparedStatement,不需要创建Statememnt对象了,创建PrepareStatement对象,放入sql语句参数

然后调用pstmt 的setXXX()方法,给? 赋值

比如:setString(1,usename) 给第一个问号赋值,usename参数,并且这个参数是String类型的

然后调用pstmt 的方法 executeQuery()查询方法 或者 executeUpdata() 修改方法,返回的也是结果集。然后对结果集操作

预处理的原理

服务器的工作:

校验SQL的语法

编译,将sql语句 变成一个类似函数的东西

执行:调用这个函数

PreparedStatement:

前提: 连接的数据库必须支持预处理

每一个pstmt 都与一个sql模板 绑定一起。先把sql模板 给数据库,数据库先校验,在进行编译。执行时,只是把参数传递过去

若二次执行,就不用再次校验 和编译。直接进行执行。

MySQL 默认预处理是关的

JDBC UTILS

使用 JDBC utils 来连接数据库 创建连接

通过配置文件,将四大参数 通过键值对,配置在文件中

然后执行jdbc Utils 方法时 ,先加载配置文件, 之后 会加载驱动类

之后使用JDBC Utils 中的getConnection方法来创建 Connection 对象, 建立连接

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值