先贴代码,在做说明

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连接数据库操作的更多相关文章

  1. JAVA中的集合容器操作类

    目录 JAVA中的集合容器操作类 List集合 ArrayList的操作方法说明 LinkedList Stack Set Map Queue 总结 JAVA中的集合容器操作类 Java容器类库总共分 ...

  2. 第67节:Java中的JDBC运用

    第67节:Java中的JDBC运用 https://www.jianshu.com/p/628a9ba1b205

  3. 学习笔记-JDBC连接数据库操作的步骤

    前言 这里我就以JDBC连接数据库操作查询的步骤作以演示,有不到之处敬请批评指正! 一.jdbc连接简要步骤 1.加载驱动器. 2.创建connection对象. 3.创建Statement对象. 4 ...

  4. java中JDBC连接数据库操作的基本步骤

    JDBC基本步骤 创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lan ...

  5. [数据库操作]Java中的JDBC的使用方法.

    前言:想必大家在实际编码中都遇到过JDBC的操作, 这里仅做自己的一个总结, 有错误和不完整之处还请大家提出来. 1,JDBC其实一套规范(接口)数据库厂商需要实现此接口(实现类)--数据库驱动 2, ...

  6. JDBC连接数据库操作

    JDBC连接数据库 •创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.l ...

  7. Java中通过JDBC远程连接Oracle数据库

    通过jdbc连接数据库,拢共分三步: 第一步:下载一个JDBC的驱动,然后把jar包扔到项目里并add to build path: 第二步:去本地oracle文件夹下找到“TNSNAMES.ORA” ...

  8. java中的JDBC

    Java 是通过 JDBC 技术实现对各种数据库访问的,换句话说,JDBC 充当了 Java 应用程 序与各种不同数据库之间进行对话的媒介. JDBC 是 Java 数据库连接(Java DataBa ...

  9. Java中Properties类的操作

    知识学而不用,就等于没用,到真正用到的时候还得重新再学.最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用Java来写,外加 ...

  10. Java中Properties类的操作配置文件

    知识学而不用,就等于没用,到真正用到的时 候还得重新再学.最近在看几款开源模拟器的源码,里面涉及到了很多关于Properties类的引用,由于Java已经好久没用了,而这些模拟器大多用 Java来写, ...

随机推荐

  1. 通过计算巢轻松部署 Walrus

    概述 Walrus 是一个用于管理和部署应用程序的平台,它提供了一个集中化的管理界面,使用户能够轻松地管理应用的生命周期,包括创建.配置.部署.监控和维护应用.Walrus 还提供了一些高级功能,如应 ...

  2. nginx四层负载nginx七层负载,nginx基于nginx-sticky会话保持.

    1. nginx负载均衡实战 nginx提供了 4 7层负载均衡. 可根据业务需求选择不同负载均衡策略. 1.1.1 nginx四层负载均衡[网络层TCP负载] 不支持动静分离,但支持 http my ...

  3. VMware Ubuntu虚拟机打开报错问题

    问题描述 昨天虚拟机卡死,我把VMware Workstation的进程用任务管理器杀掉了,今天重新打开虚拟机却发现以下报错 报错内容 另一个程序已锁定文件的一部分,进程无法访问 打不开磁盘" ...

  4. Kafka--Rebalance重平衡

    Rebalance总览 Rebalance触发条件 (1)消费组成员发生变更,有新消费者加入或者离开,或者有消费者崩溃 (2)消费者组订阅的主题数量发生变更 (3)消费组订阅主题的分区数发生变更 避免 ...

  5. Nodejs静态资源管理 路由

    express提供了一个非常好用的方法,叫做 express.static(),通过此方法,可以非常方便地创建一个静态web资源服务器 app.use(express.static('public') ...

  6. kettle从入门到精通 第六十课 ETL之kettle for循环处理每条数据,so easy!

    1.kettle原生是支持for循环处理的,无需通过javascript脚本或者java脚本开发for循环控制.当然如果想通过脚本挑战下也是可以的. 本节课主要讲解如何通过kettle中的job来实现 ...

  7. ETL工具-nifi干货系列 第十八讲 nifi Funnel实战教程

    1.Funnel (漏斗),Funnel是 NiFi 组件,用于将多个连接中的数据合并到一个连接中. 使用场景:nifi中的Funnel组件用于合并多个数据流并将它们传递到下游处理器.它可以将来自不同 ...

  8. 题目:SHMIP The subglacial hydrology model intercomparison Project

    SHMIP(冰下水文模型比较计划)是一个致力于解决冰下水文多种理论方法问题的项目.该计划通过构建一系列综合模拟实验,并对运行这些模拟的各参与模型的结果进行比较,以达到其目标.这将有助于潜在的模型用户更 ...

  9. 在线Token、随机密码生成工具

    在线生成自定义长度,包含大写或小写字母.数字或符号的随机字符串.无论你需要生成API访问令牌.账户激活令牌,还是随机密码字符串,它都能帮你快速完成. 在线Token.随机密码生成工具

  10. sqlUtil

    package com.cmbchina.monitor.utils;import com.alibaba.druid.sql.ast.SQLStatement;import com.alibaba. ...