Java之JDBC简单总结

news/2024/5/19 2:10:13 标签: Java, JDBC

本文主要分以下几个部分:

1. JDBC简介
2. JDBC中常用的类和接口
3. 如何实现数据库的连接
4. 元数据
5. 批处理

JDBC简介

JDBCJava DataBase Connectivity)Java数据库连接,由Java编写的类和接口组成,同时也为开发人员提供了一组用于访问数据库的API,并支持SQL语句。利用JDBC可以将Java连接到不同的数据库比如oracle,MySQL,SQL Server等。

JDBC的主要功能如下:

- 建立与数据库或者其他数据源的连接
- 向数据库发送SQL命令
- 处理数据库的返回结果
- JDBC如何实现数据库的平台无关性呢?

为了让JDBC与平台无关,JDBC设计了“驱动程序管理类”也就是DriverManager类,该类会动态维护目前所有数据库产品的驱动程序对象,通过加装相应的数据库驱动程序就可以实现对相应数据库的访问。

JDBC中常用的类和接口

1.驱动程序管理类DriverManager

DriverManager类是JDBC的管理层,作用于用户和驱动程序之间,它跟踪可用的驱动程序,并在数据库和相应的驱动程序之间建立连接。下面是代码是加载驱动程序并建立数据库连接

// 1.加载驱动程序 
Class.forName("com.mysql.jdbc.Driver"); 
//Class.forName("oracle.jdbc.driver.OracleDriver"); 
// 2.与数据库进行连接 
String url = "jdbc:mysql://127.0.0.1:3306/jdbc";
con = DriverManager.getConnection(url, user, password);

首先使用反射注册数据库驱动程序,上面第一行表示MySQL的驱动程序,第二行是oracle的驱动程序,url定位一个数据源,其中第一个jdbc是协议,mysql是子协议,127.0.0.1表示本机,第二个jdbc是要连接的数据库的名字,user是登录数据库的用户名,password是登录密码。

2.声明类Statement

Statement对象用于将SQL语句发送到数据库中。有三种类型的Statement对象:Statement、PreparedStatement(从Statement继承而来)、CallbleStatement(从PreparedStatement继承而来)。Statement用于执行不带参数的简单SQL语句,PreparedStatement用于执行预编译SQL语句,CallbleStatement用于执行对数据库存储过程的调用。

// 3.创建Statement对象,执行静态的sql语句 
Statement state = con.createStatement(); 
String sql = "select * from imooc_goddess;"; 
// 执行sql语句 
ResultSet rs = state.executeQuery(sql);

连接到数据库以后,就可以通过createStatement方法创建一个Statement对象,然后通过executeQuery方法查询数据库。Statement还有其他一些常用的的方法:

- execute():运行语句,返回是否有结果集
- executeQuery():运行查询语句,返回ResultSet对象
- executeUpdate():执行更新操作,返回更新的行数
- addBatch():增加批处理语句
- executeBatch():执行批处理语句
- clearBatch():清理批处理语句

3.数据库连接类Connection

String url = "jdbc:mysql://127.0.0.1:3306/jdbc";
con = DriverManager.getConnection(url, user, password);

4.结果集合类ResultSet

ResultSet包含符合SQL语句条件的所有行记录,通过它一整套的get方法,可以获取不同类型的数据。ResultSet.next()方法用于移动到下一行数据。

// 3.创建Statement对象,执行静态的sql语句 
Statement state = con.createStatement(); 
String sql = "select * from imooc_goddess;"; 
// 执行sql语句 
ResultSet rs = state.executeQuery(sql); 
while(rs.next()) { 
    // 列数从1开始 
    System.out.println("id:" + rs.getInt(1)); 
    System.out.println("name:" + rs.getString(2));
}

get系列的方法,你可以通过列名来获得数据,也可以通过列号来获取数据,不过要注意,列号是从1开始的。

如何实现数据库的连接

要实现Java和数据库的连接,首先我们得下载相应的工具。这里我以MySQL为例,所以我们得先去下载jar包,https://dev.mysql.com/downloads/connector/j/,下好后解压把jar包导入到相应的项目中即可。其次我们还可以下一个MySQL的图片界面管理工具,比如Navicat或workbench,不下用命令行也行。

搞好这些东西之后,创建一个数据库,就可以进行数据库的连接了。

private static String url = "jdbc:mysql://127.0.0.1:3306/jdbc"; 
private static String user = "root"; 
private static String password = "1311664842"; 
private static Connection con = null;
// 1.加载驱动程序 
Class.forName("com.mysql.jdbc.Driver"); 
//Class.forName("oracle.jdbc.driver.OracleDriver"); 
// 2.与数据库进行连接 
con = DriverManager.getConnection(url, user, password);
// 3.创建Statement对象,执行静态的sql语句 
Statement state = con.createStatement(); 
String sql = "select * from imooc_goddess;"; 
// 执行sql语句 
ResultSet rs = state.executeQuery(sql);
while(rs.next()) { 
    // 列数从1开始 
    System.out.println("id:" + rs.getInt(1)); 
    System.out.println("name:" + rs.getString(2));
}
// 关闭资源
rs.close(); 
state.close(); 
con.close();

上面就是一个简单的完整的连接数据库、查询数据库、返回结果的小代码了。

元数据

元数据是用于描述数据库或数据库一部分的数据,它是关于数据的数据。元数据被用于动态地调节数据库的内容和结果集。分为两类:关于数据库的,关于结果集的

1.关于数据库的DatabaseMetaData元数据

DatabaseMetaData对象能够提供关于特定数据库的结构信息。通过数据库的连接获得

DatabaseMetaData dmd = con.getMetaData();

DatabaseMetaData提供的方法有很多,通过返回结果的类型可分为4类:字符串、整数、布尔值和ResultSet。

2.关于结果集的ResultSetMetaData元数据

ResultSetMetaData是关于结果集的元数据,可以通过ResultSet的getMeatData方法获得。

ResultSetMetaData rsmd = rs.getMeatData();

关于很多具体的方法就不说了,大家可以查看API文档

批处理

所谓批处理,就是可以一起执行多条SQL更新语句,这样就不要一条一条的执行,可以提高我们的效率。

Statement中的方法能够让我们进行批处理,具体步骤如下:

// 关闭自动提交
con.setAutoCommit(false);
Statement st = con.createStatement();
// 将给定的SQL命令添加到此Statement对象的命令列表中
st.addBatch(insert into....);
st.addBatch(insert into....);
st.addBatch(insert into....);
// 将一批命令提交给数据库执行
st.executeBatch();
con.commit();
// 开启自动提交
con.setAutoCommit(true);

http://www.niftyadmin.cn/n/1236462.html

相关文章

《C++ Primer》学习笔记(六):函数

《C Primer》学习笔记(六):函数函数基础局部对象函数声明分离式编译参数传递数组形参main:处理命令行选项含有可变形参的函数返回数组指针函数重载特殊用途语言特性默认实参内联函数constexpr函数调试帮助assert预处理宏NDEBUG 预处理变量函数…

《C++ Primer》学习笔记(七):类

《C Primer》学习笔记(七):类定义抽象数据类型设计Sales_data类定义改进的Sales_data类定义类相关的非成员函数构造函数拷贝、赋值和析构访问控制与封装友元类的其他特性构造函数再探委托构造函数默认构造函数的作用隐式的类类型转换聚合类类…

《C++ Primer》学习笔记(八):IO库

《C Primer》学习笔记(八):IO库IO类IO象无拷贝或赋值条件状态管理输出缓冲文件输入输出使用文件流对象文件模式string流使用istringstream使用ostringstream练习IO类 头文件iostream 定义了用于读写流的基本类型,fstream 定义了读…

JSP使用cookie实现记住账号密码的功能

所谓自动登录,就是下次打开的时候不用再次输入账号密码,一定程度上方便了用户,但也有它的缺点,就是可能泄露用户信息。 HTTP的无状态性 HTTP的无状态性,是指当客户端发请求给服务器的时候,服务器会响应客…

JSP超链接传递参数的一个小问题!!!

只是一个小问题&#xff0c;但却是致命的&#xff01;被坑了好多次了&#xff0c;记录一下&#xff0c;给自己提个醒。 JSP的URL传参有好多种方式&#xff0c;但目前只发现这一种方式有问题&#xff0c;就是这种方式 <a href "xxx.jsp?idxx"></a> 是…

《C++ Primer》学习笔记(十):泛型算法

《C Primer》学习笔记&#xff08;十&#xff09;&#xff1a;泛型算法初识泛型算法只读算法写容器元素的算法重排容器元素的算法定制操作向算法传递函数lambda表达式参数绑定再探迭代器插入迭代器iostream迭代器istream_iterator操作ostream_iterator操作反向迭代器反向迭代器…

Java编程的一些小技巧-----基础语法篇(1)

今天在github上面看到了一个很好的项目&#xff0c;是在Stack Overflow上面点赞数top100的关于Java的回答&#xff0c;看了一些&#xff0c;感觉十分实用&#xff0c;对于新手来说&#xff0c;能加深对Java的认识&#xff0c;同时也能让代码更简洁。所以想写下这系列的博文&…

Java编程的一些小技巧-----基础语法篇(2)

上了一天的课&#xff0c;等下18:30还得上课&#xff0c;趁这个时间先更新一波。 6.如何从一个多层嵌套循环中直接跳出&#xff1f; for (Type type : types) { for (Type t : types2) { if (some condition) { // Do something and break... break; // 这样只退出了最里的…