Java登陆第九天——JDBC(一)DriverManager、Connection、Statement
1.Java登陆第一天——Mysql安装2.Java登陆第一天——Maven入门3.Java登陆第二天——SQL之DDL4.Java登陆第二天——SQL之DML5.Java登陆第三天——SQL之DQL(一)基础查询、聚合函数、分组查询6.Java登陆第四天——SQL之DQL(二)分页查询、多表查询、自连接7.Java登陆第五天——SQL之DQL(三)子查询8.Java登陆第六天——SQL之表复制,表去重,合并查询9.Java登陆第六天——SQL之SQL(四)外连接10.Java登陆第六天——SQL之约束11.Java登陆第七天——SQL之事务12.Java登陆第七天——SQL之事务隔离13.Java登陆第八天——SQL之DCL
14.Java登陆第九天——JDBC(一)DriverManager、Connection、Statement
15.Java登陆第十天——JDBC(二)ResultSet16.Java登陆第十一天——JDBC(三)PreparedStatement、CLOB、BLOB17.Java登陆第十二天——网络编程(一)网络的概念18.Java登陆第十二天——网络编程(二)InetAddress、Socket19.Java登陆第十三天——网络编程(三)DatagramSocket20.Java登陆第十四天——网络编程(四)韩顺平网络编程21.Java登陆第十五天——网络编程(四)韩顺平网络编程22.Java登陆第十六天——网络编程(四)韩顺平网络编程23.Java登陆第十七天——网络编程(四)韩顺平网络编程完成24.Java登陆第十七天——正则表达式25.Java登陆第十八天——Java8之Lambda表达式26.Java登陆第十九天——HTML规范与语法27.Java登陆第二十天——HTML常用标签28.Java登陆第二十一天——CSS29.Java登陆第二十二天——JavaScript入门30.Java登陆第二十三天——JavaScript对象、JSON、事件31.Java登陆第二十四天——JavaScriptBOM、DOM32.Java登陆第二十五天——Tomcat、认识JavaWeb项目33.Java登陆第二十六天——Http34.Java登陆第二十六天——Servlet35.Java登陆第二十七天——多种方法Servlet映射、Content-Type36.Java登陆第二十八天——Servlet生命周期37.Java登陆第二十九天——Servlet继承关系,service和doGet的区别38.Java登陆第二十九天——ServletConfig和ServletContext39.Java登陆第二十九天——HttpServletRequest和HttpServletResponse40.Java登陆第二十九天——请求转发和响应重定向41.Java登陆第三十天——Cookie和Session42.Java登陆第三十天——域对象43.Java登陆第三十一天——Filter44.Java登陆第三十一天——监听器45.Java登陆第三十二天——AJAX和异步46.Java登陆第三十二天——前端工程化47.Java登陆第三十二天——ES6(一)let、const、模板字符串、解构表达式、箭头函数48.Java登陆第三十三天——ES6(二)reset、spread、Class类语法糖49.Java登陆第三十三天——ES6(二)浅拷贝、深拷贝50.Java登陆第三十三天——ES6(二)模块、模块化51.Java登陆第三十四天——Node.js安装、npm配置、npm命令52.Java登陆第三十四天——使用Vite创建工程化的Vue3项目53.Java登陆第三十五天——Vite+Vue3目录结构、.vue文件理解(SFC)54.Java登陆第三十五天——VUE初始页面解析55.Java登陆第三十六天——VUE3引入CSS56.Java登陆第三十六天——VUE3响应式入门、setup语法糖57.Java登陆第三十七天——VUE3插值表达式、文本渲染、属性渲染、事件绑定58.Java登陆第三十七天——VUE3响应式基础、条件渲染、列表渲染59.Java登陆第三十八天——VUE3双向绑定,监听器(侦听器)60.Java登陆第三十八天——VUE3生命周期、钩子函数、组件拼接、组件传参(组件通信)61.Java登陆第三十九天——Router路由入门62.Java登陆第三十九天——Router编程式路由,路由传参63.Java登陆第四十天——Router路由守卫64.Java登陆第四十天——Router路由守卫练习65.Java登陆第四十一天——Promise、async关键字、await关键字66.Java登陆第四十一天——Axios67.Java登陆第四十二天——Axios拦截器68.Java登陆第四十二天——跨域69.Java登陆第四十三天——Pinia70.Java登陆第四十四天——跟写微头条遇到的问题JDBC
JDBC本身是Java提供的一套标准接口,由不同数据库厂商提供接口的具体实现。
至此,开发者只需调用JDBC就可以完成对各种数据库的操作。
mysql-jdbc-maven坐标
<!-- Mysql版本:5.7.36 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.49</version>
</dependency>
JDBC主要类及接口
JDBC核心是为开发者提供的Java API库。(Java API是指提供各种功能的Java类\接口)
开发者使用JDBC可以创建数据库连接、执行SQL语句、检索结果集等。
java.sql包下常用类与接口如下:
全类名 | 类型 | 描述 |
---|---|---|
java.sql.DriverManager | 类 | 管理JDBC驱动程序 |
java.sql.Connection | 接口 | 建立与某数据库连接,一个连接就是一个会话 |
java.sql.Statement | 接口 | 执行SQL,并返回SQL执行后的结果 |
java.sql.PreparedStatement | 接口 | 更安全效率的执行SQL,并返回SQL执行后的结果 |
java.sql.ResultSet | 接口 | 查询SQL执行后的结果集 |
DriverManager类常用方法
正确加载jar包后,可以使用DriverManager类连接数据库,常用方法如下:
方法 | 类型 | 描述 |
---|---|---|
public static Connection getConnection(String url,String user, String password) throws SQLException | 静态方法 | 通过地址连接数据库,并传入用户名和密码 |
Mysql数据库连接地址形式如下:
String url= "jdbc:mysql://IP地址:端口号/数据库名";
//假设本机上存在一个tt数据库。那么地址应该如下
jdbc:mysql://localhost:3306/tt
getConnection()方法返回的是一个Connection对象。
Connection接口常用方法
所有数据库操作都从Connection接口开始。常用方法如下:
方法 | 类型 | 描述 |
---|---|---|
Statement createStatement() throws SQLException | 普通方法 | 创建Statement对象并返回 |
PreparedStatement prepareStatement(String sql) throws SQLException | 普通方法 | 创建prepareStatement对象并返回 |
boolean isClosed() throws SQLException | 普通方法 | 判断连接是否已关闭 |
void close() throws SQLException | 普通方法 | 关闭数据库 |
void setAutoCommit(boolean autoCommit) throws SQLException | 普通方法 | 设置数据库的自动提交(事务) |
boolean getAutoCommit() throws SQLException | 普通方法 | 判断数据库是否自动提交(事务) |
Savepoint setSavepoint(String name) throws SQLException | 普通方法 | 设置某保存点(事务) |
void rollback() throws SQLException | 普通方法 | 全部回滚(事务) |
void rollback(Savepoint savepoint) throws SQLException | 普通方法 | 回滚到某保存点(事务) |
void commit() throws SQLException | 普通方法 | 提交(事务) |
栗子:连接数据库
代码如下:
public static void main(String[] args) {
String user="root";
String password="0000";
try {
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/UserTest",user,password);
System.out.println(connection);//有输出内容就证明连接数据库成功。
connection.close();//同IO流一样,建议使用完毕就关闭连接。
} catch (Exception throwables) {
throwables.printStackTrace();
}
}
程序运行结果:
Sun Nov 19 15:25:54 CST 2023 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
com.mysql.jdbc.JDBC4Connection@d44fc21
警告信息是不建议在没有身份验证的情况下建立SSL连接。不影响正常使用。
警告信息的解决办法:
jdbc:mysql://localhost:3306/UserTest?useSSL=false
//加上参数useSSL=false关闭身份验证
连接数据库后肯定需要执行SQL对数据库进行操作。
Statement接口常用方法
Statement接口负责执行SQL。常用方法如下:
方法 | 类型 | 描述 |
---|---|---|
int executeUpdate(String sql) throws SQLException | 普通方法 | 执行DML操作,返回更新的行数 |
ResultSet executeQuery(String sql) throws SQLException | 普通方法 | 执行DQL操作,返回查询的结果集 |
boolean execute(String sql) throws SQLException | 普通方法 | 执行SQL语句 |
void close() throws SQLException | 普通方法 | 关闭Statement操作 |
DDL——数据定义语言。用于定义数据的结构。 指的是增,删,改数据库
DML——数据操作语言。用于检索或修改数据。 指的是增,删,改数据
DQL——数据查询语言。用于查询各种形式的数据。 指的是查询数据
DCL——数据控制语言。用于定义数据库用户的权限。 指的是管理数据库权限
栗子:在pon表中新增数据(水杯,52)
代码如下:
public static void main(String[] args) {
String user="root";
String password="0000";
try {
Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/UserTest?useSSL=false",user,password);
Statement statement = connection.createStatement();
statement.executeUpdate("insert into pon values ('水杯','52')");
System.out.println("1");//证明执行到了这一步。
statement.close();//先开启的资源后关闭
connection.close();
} catch (Exception e) {
e.printStackTrace();
}
}
程序运行结果:
1
使用Navicat查看pon表。(Navicat:数据库图形界面工具)
executeQuery()方法的返回类型是ResultSet。此对象中存放了所有查询结果。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~