JDBC学习记录1-入门

JDBC学习记录

以此记录自己的学习历程
2024年7月9日09:12:49
JDBC全称:Java DataBase Connectivity

JDBC学习的是使用Java语言来操作关系型数据库的一套API。

这一套标准接口使得同一套Java代码,操作不同的关系型数据库

一、JDBC简单了解

JDBC实际上就是一套定义的操作所有关系型数据库的接口。各数据库厂商去实现这套接口,提供的数据库驱动jar包其实本质就是实现类,这也是我们实际执行的代码。这正是所谓的面向接口编程

二、JDBC快速入门

1.创建工程,导入驱动jar包并注册驱动

首先点击新建项目。

1720422048575

新建一个空项目,便于我们后面选择使用的JDK版本和语言级别。

1720422174314

点击右上角小齿轮->项目结构。

1720422246673

项目设置->项目->SDKSDK选择Java1.8版本;

1720422296710

语言级别选择对应的8版本,点击左下角的**“应用”**。

1720422366712

接着我们切换到项目设置->模块(Modules),点击"+"号,新建一个模块,起名为jdbc-demo,点击**“确定”**。

1720422871522

接下来我们需要导入驱动jar包,在项目新建一个文件夹../jdbc-demo/lib,用于存放驱动jar包。

1720422998324

可以去MVN Repository网站下载所需要的jar包(Maven Repository: mysql » mysql-connector-java (mvnrepository.com)),在搜索框输入MySQL-Connecter-Java,下载所需要的版本,这里下载的是5.1.48版本。

1720423238303

接着需要让工程能够识别这个jar包,右键点击这个jar包,点击**“添加为库*(Add as Library)*”**。跳出下面的界面。我们选择模块库即可,即在这个模块生效。

1720423480486

接下来我们开始编写代码,首先新建一个Java类。

1720423598793

1720423675318

前面是包名,后面是类名。创建完成之后在JDBCDemo中编写代码注册驱动。(用到的快捷操作:Ctrl+shift+/注释代码块、输入psvm按回车自动补全变成主方法Alt+Enter 选择抛出异常选项,这里选择添加异常到方法签名、Ctrl + D :这个快捷键用于复制当前行并粘贴到下一行。)遇到异常,抛出就可以了,可以是程序最起码跑起来。

注册驱动这里的com.mysql.jdbc.Driver是固定的。不过在MySQL 5之后是会自动注册的。

1720424586335

2. 获取连接

用到了DriverManager类的静态方法getConnection.

1720424979682

可以看到有三个参数,顺便提一嘴,URL是统一资源定位符。

mdn-url-all

DriverManager.getConnection(url,username,password)

会报错提示需要先创建对应的局部变量,并且getConnection还有一个返回值。均还是使用Alt+Enter补全即可。

完整代码如下:

//2.获取连接
String url="jdbc:mysql://localhost:3306/db";
String username="root";
String password="Aa@123456789";
Connection conn = DriverManager.getConnection(url, username, password);
3. 定义SQL语句
//3.定义sql
String sql = "select * from houselist";
4. 获取执行SQL对象
//4.获取执行sql的对象 Statement
Statement stmt = conn.createStatement();

接下来调用连接对象的方法来创建一个Statement类对象。

5.执行SQL

一开始的语句会发生SQLException报错,有两个问题:

SSL 连接警告: 警告信息建议显式设置 useSSL=false,以避免没有服务器身份验证的 SSL 连接。(因为MySQL是默认要求SSL连接的)

执行 SELECT 语句的错误: executeUpdate 方法不能用于执行 SELECT 语句,应该使用 executeQuery 方法。

至于为什么采用ResultSet,因为 ResultSet 是用于处理 SELECT 查询返回的结果集。SELECT 查询会返回一组记录,而 ResultSet 提供了一种机制来遍历这些记录并访问每一列的数据。别忘了在开头import块那里加上语句import java.sql.ResultSet;

如果是Update操作,使用int没有问题。

//5.执行sql
//int count =stmt.executeUpdate(sql); //返回值是受影响的行数
ResultSet rs = stmt.executeQuery(sql);
6. 处理执行结果

根据需求自定义。

//6.处理结果
//System.out.println(count);
while (rs.next()) {
    int id = rs.getInt("houseid");
    String address = rs.getString("address");
    System.out.println("ID: " + id + ", Address: " + address);
}

7.释放资源

由于栈的特性,先开的Connection需要后关闭。

//7.释放资源
stmt.close();
conn.close();

测试程序,能够正常输出结果。

  • 37
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值