热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

java中使用jdbc连接数据库操作

先贴代码,在做说明importjava.sql.*;importjava.util.ArrayList;importjava.util.List;publicclassConn{p

先贴代码,在做说明

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 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 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连接数据库操作


推荐阅读
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 本文介绍了使用Java实现大数乘法的分治算法,包括输入数据的处理、普通大数乘法的结果和Karatsuba大数乘法的结果。通过改变long类型可以适应不同范围的大数乘法计算。 ... [详细]
  • HDU 2372 El Dorado(DP)的最长上升子序列长度求解方法
    本文介绍了解决HDU 2372 El Dorado问题的一种动态规划方法,通过循环k的方式求解最长上升子序列的长度。具体实现过程包括初始化dp数组、读取数列、计算最长上升子序列长度等步骤。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
author-avatar
穿过a黑夜_440
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有