网站首页 > java教程 正文
什么是JDBC?
Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。JDBC也是Sun Microsystems的商标。我们通常说的JDBC是面向关系型数据库的。
在MAVEN中引入驱动
<dependencies>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.28</version>
</dependency>
</dependencies>
连接数据库并测试
连接数据库分为以下几步:
- 加载驱动
- 建立数据库连接
- 执行相关的语句
- 关闭连接
加载驱动
在JDBC8中其实会自动加载,这里还是按规范演示一下。
代码如下:
public class Test {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
var a = Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println(a);
}
}
结果:驱动加载成功
建立数据库连接
代码:
public class Test {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
//加载驱动
var a = Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println(a);
//连接数据库 localhost是连接本地IP,3307是数据库的端口,一般端口默认是3306,这里我的端口改过参考一下就可以。
//test 是要连接的数据库名,root是账号,我没有设置密码所以不用写。
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3307/test?user=root");
System.out.println(conn);
}
}
结果:
执行查询语句
代码:
public class Test {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
//加载驱动
var a = Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println(a);
//连接数据库 localhost是连接本地IP,3307是数据库的端口,一般端口默认是3306,这里我的端口改过参考一下就可以。
//test 是要连接的数据库名,root是账号,我没有设置密码所以不用写。
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3307/test?user=root");
System.out.println(conn);
//创建SQL语句执行工具
Statement st = conn.createStatement();
//ResultSet的意思是结果集,查询返回的结果放在ResultSet对象中,结果集中有一个光标每次只指一行,并且是从第一行开始
ResultSet rs = st.executeQuery("select * from user");
//判断当前列是否有值
//rs.next()rs中的光标向下移动一位
while (rs.next()) {
//rs.getString将当前列作为String类型保存,参数为当前列的标签
System.out.println(rs.getString("name"));
}
}
}
结果:
关闭数据库连接
public class Test {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
//加载驱动
var a = Class.forName("com.mysql.cj.jdbc.Driver");
System.out.println(a);
//连接数据库 localhost是连接本地IP,3307是数据库的端口,一般端口默认是3306,这里我的端口改过参考一下就可以。
//test 是要连接的数据库名,root是账号,我没有设置密码所以不用写。
Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3307/test?user=root");
System.out.println(conn);
//创建SQL语句执行工具
Statement st = conn.createStatement();
//查询sql语句返回一个ResultSet对象
ResultSet rs = st.executeQuery("select * from user");
//判断当前列是否有值
//rs.next()rs中的光标向下移动一位
while (rs.next()) {
//rs.getString将当前列作为String类型保存,参数为当前列的标签
System.out.println(rs.getString("name"));
}
//关闭连接
conn.close();
}
}
最后附上SQL类型对应的JAVA类型
SQL类型 | Java类型 |
CHAR | java.lang.String |
VARCHAR | java.lang.String |
LONGVARCHAR | java.lang.String |
NUMERIC | java.math.BigDecimal |
DECIMAL | java.math.BigDecimal |
BIT | boolean |
TINYINT | byte |
SMALLINT | short |
INTEGER | int |
BIGINT | long |
REAL | float |
FLOAT | double |
DOUBLE | double |
BINARY | byte[] |
VARBINARY | byte[] |
LONGVARBINARY | byte[] |
DATE | java.sql.Date |
TIME | java.sql.Time |
TIMESTAMP | java.sql.Timestamp |
BLOB | java.sql.Blob |
CLOB | java.sql.Clob |
Array | java.sql.Array |
REF | java.sql.Ref |
Struct | java.sql.Struct |
如果感觉小编写得不错,请素质三连:点赞+转发+关注。我会努力写出更好的作品分享给大家。更多JAVA进阶学习资料小编已打包好,可以关注私信找我领取哦!
原文 https://bbs.huaweicloud.com/blogs/348327
猜你喜欢
- 2024-10-27 Spring Boot 2.x基础教程:使用JdbcTemplate访问MySQL数据库
- 2024-10-27 Java工具分享以及安装教程(1)——安装mysql数据库
- 2024-10-27 JDBC连接数据库基本流程(jdbc连接数据库5个步骤代码)
- 2024-10-27 MySQL 数据同步神器 - Canal 入门篇
- 2024-10-27 Spring Boot和Flink实现 MySQL 数据同步
- 2024-10-27 晋级mysql知识点(十一) MySQL如何与应用系统建立连接
- 2024-10-27 什么是 Java 数据库连接 (JDBC)?(java数据库连接库jdbc用到哪种设计模式)
- 2024-10-27 如何实现MySQL中的数据同步到ES(电子税务局怎么设置数据同步工商年报)
- 2024-10-27 线上MySQL不可用,报错数据库无法连接
- 2024-10-27 Todo List:Node+Express 搭建服务端连接Mysql - 第五章(第1节)
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)