java中使用jdbc连接数据库操作
先贴代码,在做说明
import java.sql.*;
import java.util.ArrayList;
import java.util.List; public class Conn {
private static final String DRIVER = "com.mysql.cj.jdbc.Driver";//mysql 8 的驱动
private static final String DR_URL = "jdbc:mysql://localhost:3306/blog?characterEncoding=utf8&useSSL=true";//数据库连接
private static final String USER = "root";//用户名
private static final String PASSWORD = "root";//密码 /**
* 查询所有
* */
public List<UserBean> selectAll(){
Connection connection = null;
PreparedStatement preparedStatement = null;
ResultSet resultSet = null;
try {
/**
* 注册驱动
* */
Class.forName(DRIVER);
/**
* 连接数据库
* */
connection = DriverManager.getConnection(DR_URL, USER, PASSWORD);
//处理sql语句
String sql = "select * from user";
/**
* 预处理sql语句,防止sql注入
* */
preparedStatement = connection.prepareStatement(sql);
//执行查询语句
resultSet = preparedStatement.executeQuery();
List<UserBean> list = new ArrayList<>();
//将得到的结果注入list以便输出,
/**
* resultSet.getxxx()括号值:
* 1.数字,表示结果集中的第几列结果
* 2.数据库字段名
* */
while (resultSet.next()) {
UserBean userBean=new UserBean();
userBean.setId(resultSet.getInt("id"));
userBean.setName(resultSet.getString("name"));
userBean.setPassword(resultSet.getString("password"));
list.add(userBean);
}
return list;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally {
/**
* 当完成一个数据库操作后应当将已经开启的资源关闭,否则会占用大量内存资源,导致内存溢出。关闭资源时注意先开后关的顺序
* */
if (resultSet != null) {
try {
resultSet.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (preparedStatement != null) {
try {
preparedStatement.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (connection != null) {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
return null;
}
}
在使用jdbc连接数据库的时候,会发现部分操作时需要重复使用的,比如连接数据库和关闭资源,这时候就可以将其提炼出来封装成一个方法方便使用,并且代码看起来不会很臃肿杂乱,还会在一定程度上节省代码量和空间内存。
在数据库操作结束后一定要将开启的资源按照先开后关的顺序将其关闭。否则当数据量大到一定程度时会占用大量内存资源,导致内存溢出。
在关闭资源时我们通常使用的是xxx.close()来处理的,如果在finally里面这样关闭时:
1 finally{
2 try {
3 resultSet.close();
4 preparedStatement.close();
5 connection.close();
6 } catch (SQLException e) {
7 e.printStackTrace();
8 }
9 }
这样看它的确是按照之前说的先开后关的顺利了,并且也会捕获异常,但是在这种情况下,假如在connection没有来得及赋值的时候出现了意外,这样就会直接执行finally里面的代码,这样就会导致一个空对象调用close,就会引起新的异常导致程序崩溃,对于statement依然如此,因此,我们需要进行判空!所以关闭资源的正确写法如下:
1 finally {
2 *//**
3 * 当完成一个数据库操作后应当将已经开启的资源关闭,否则会占用大量内存资源,导致内存溢出。关闭资源时注意先开后关的顺序
4 * *//*
5 if (resultSet != null) {
6 try {
7 resultSet.close();
8 } catch (SQLException e) {
9 e.printStackTrace();
10 }
11 }
12 if (preparedStatement != null) {
13 try {
14 preparedStatement.close();
15 } catch (SQLException e) {
16 e.printStackTrace();
17 }
18 }
19 if (connection != null) {
20 try {
21 connection.close();
22 } catch (SQLException e) {
23 e.printStackTrace();
24 }
25 }
26 }
关于jbdc连接数据库主要操作就这样!!!!!
java中使用jdbc连接数据库操作的更多相关文章
- JAVA中的集合容器操作类
目录 JAVA中的集合容器操作类 List集合 ArrayList的操作方法说明 LinkedList Stack Set Map Queue 总结 JAVA中的集合容器操作类 Java容器类库总共分 ...
- 第67节:Java中的JDBC运用
第67节:Java中的JDBC运用 https://www.jianshu.com/p/628a9ba1b205
- 学习笔记-JDBC连接数据库操作的步骤
前言 这里我就以JDBC连接数据库操作查询的步骤作以演示,有不到之处敬请批评指正! 一.jdbc连接简要步骤 1.加载驱动器. 2.创建connection对象. 3.创建Statement对象. 4 ...
- java中JDBC连接数据库操作的基本步骤
JDBC基本步骤 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lan ...
- [数据库操作]Java中的JDBC的使用方法.
前言:想必大家在实际编码中都遇到过JDBC的操作, 这里仅做自己的一个总结, 有错误和不完整之处还请大家提出来. 1,JDBC其实一套规范(接口)数据库厂商需要实现此接口(实现类)--数据库驱动 2, ...
- JDBC连接数据库操作
JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...
- Java中通过JDBC远程连接Oracle数据库
通过jdbc连接数据库,拢共分三步: 第一步:下载一个JDBC的驱动,然后把jar包扔到项目里并add to build path: 第二步:去本地oracle文件夹下找到“TNSNAMES.ORA” ...
- java中的JDBC
Java 是通过 JDBC 技术实现对各种数据库访问的,换句话说,JDBC 充当了 Java 应用程 序与各种不同数据库之间进行对话的媒介. JDBC 是 Java 数据库连接(Java DataBa ...
- Java中Properties类的操作
知识学而不用,就等于没用,到真正用到的时候还得重新再学.最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用Java来写,外加 ...
- Java中Properties类的操作配置文件
知识学而不用,就等于没用,到真正用到的时 候还得重新再学.最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用 Java来写, ...
随机推荐
- 8.15考试总结(NOIP模拟40)[送花·星空·零一串]
我只对现实世界绝望过,却未对自己绝望过! T1 送花 解题思路 线段树维护序列. 我们暴力枚举右端点,用线段树搞出当前右端点的最优的左端点的值. 假设当前扫到的右端点是 r ,颜色是 col. 这种颜 ...
- 《python核心编程《第二版》》笔记章节索引
本文章作为我的其它一系列关于<python核心编程<第二版>>的笔记的文章索引. 第一章:Python-快速入门:https://www.cnblogs.com/mrlayfo ...
- 【AI应用开发全流程】使用AscendCL开发板完成模型推理
本文分享自华为云社区<[昇腾开发全流程]AscendCL开发板模型推理>,作者:沉迷sk. 前言 学会如何安装配置华为云ModelArts.开发板Atlas 200I DK A2.并打通一 ...
- 采用Dapr 的IoT 案例
CNCF 发布了一篇Dapr 的IoT 案例:Tempestive uses Dapr and K8s to track IoT messages | CNCF.Tempestive 是一家物联网解决 ...
- 事件对象的属性 div点击移动事件
// 事件对象的相关属性 // e.target 触发事件的标签对象 // e.target支持所有标签对象的操作 // ...
- jquery的绑定和删除
// 基本语法形式 $().on( 事件类型 , 事件处理函数 ) // 删除事件处理函数 // 必须绑定的是 函数名称 才能删除 绑定的事件处理函数 ...
- ETL工具-nifi干货系列 第十四讲 nifi处理器QueryDatabaseTableRecord查询表数据实战教程
1.处理器QueryDatabaseTableRecord和处理器QueryDatabaseTable比较相似,该组件生成一个 SQL 查询,或者使用用户提供的语句,并执行它以获取所有在指定的最大值列 ...
- kettle从入门到精通 第二十三课 kettle carte 错误(java.lang.OutOfMemoryError: GC overhead limit exceeded,Could not emit buffer due to lack of requests,java heap space)分析
1.Could not emit buffer due to lack of requests(无法发出缓冲区,因为请求不足.) 原因有两点:1)消费者处理数据能力较弱,如表输出步骤.2)消费者没有处 ...
- JavaScript模块化笔记
JavaScript模块化笔记 一个模块就是一堆被封装到一个文件当中的代码,并使用export暴露部分代码给其他的文件.模块专注于一小部分功能并与应用的其他部分松耦合,这是因为模块间没有全局变量或共享 ...
- 实验六-Salt本地pojie实验
[实验目的]了解Salt型密码的加密机制,学会使用本地密码pojie工具来pojieSalt型密码,了解pojie密码原理. [知识点]Salt,密码pojie [实验原理] 1.Salt概念 在密码 ...