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连接数据库主要操作就这样!!!!!

原文地址:https://www.cnblogs.com/lijchah/p/12080395.html

时间: 2024-10-10 08:05:26

java中使用jdbc连接数据库操作的相关文章

java中使用JDBC连接数据库的步骤

java中使用JDBC连接数据库的步骤? 采纳率:46%6级2015.06.30 1.注册驱动Class.forname("com.mysql.jdbc.Driver");//这是连接mysql数据库的驱动2.获取数据库连接java.sql.Connection conn=java.sql.DriverManager.getConnection(); 3.获取表达式java.sql.Statement stmt=conn.createStatement("jdbc:mysql

java中的jdbc连接数据库方法及应用

jdbc连接数据库的口诀:猪脸特直观 import java.sql.Connection; import java.sql.Driver; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Demo03 { public static void main(String[] args) thr

线程基础:线程(3)——JAVA中的基本线程操作(中)

(接上文<线程基础:线程(2)--JAVA中的基本线程操作(上)>) 1-4.注意synchronized关键字的使用 在前面的文章中我们主要讲解的是线程中"对象锁"的工作原理和操作方式.在讲解synchronized关键字的时候,我们还提到了synchronized关键字可以标注的位置.大家经常看到相当部分的网贴,在它们的代码示例中将synchronized关键字加载到代码的方法体上,然后告诉读者:这个操作是线程安全的.代码可能如下: /** * 这个类的class对象进

java中 mongodb的各种操作

一. 常用查询: 1. 查询一条数据:(多用于保存时判断db中是否已有当前数据,这里 is  精确匹配,模糊匹配 使用 regex...) public PageUrl getByUrl(String url) { return findOne(new Query(Criteria.where("url").is(url)),PageUrl.class); } 2. 查询多条数据:linkUrl.id 属于分级查询 public List<PageUrl> getPageU

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

前言:想必大家在实际编码中都遇到过JDBC的操作, 这里仅做自己的一个总结, 有错误和不完整之处还请大家提出来. 1,JDBC其实一套规范(接口)数据库厂商需要实现此接口(实现类)--数据库驱动 2,jdbc的作用: 可以和数据库创建链接 发送sql语句 接收返回值,处理结果 3,api详解(java.sql或者javaX.sql) DriverManager 类: 管理一组 JDBC 驱动程序的基本服务. 常用方法: registerDriver(Driver):注册驱动 查看 mysql的D

JDBC连接数据库操作

JDBC连接数据库 ?创建一个以JDBC连接数据库的程序,包含7个步骤: 1.加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机), 这通过java.lang.Class类的静态方法forName(String  className)实现. 例如: try{ //加载MySql的驱动类 Class.forName("com.mysql.jdbc.Driver") ; }catch(ClassNotFoundException e){ Sy

在Eclipse中使用JDBC连接数据库

一:以在Eclipse中使用JDBC连接Microsoft SQL Server 2000数据库为例: 1.打开Microsoft SQL Server 2000服务管理器 2.在Microsoft SQL Server 2000中新建数据库student 3.打开Eclipse,新建项目工程test,新建包test,新建类Conn 4.编写代码如下 1 package test; 2 3 import java.sql.*; 4 5 public class Conn { // 创建类Conn

Java中通过JDBC连接Oracle数据库

通过jdbc连接数据库,拢共分三步: 第一步:下载一个JDBC的驱动,然后把jar包扔到项目里并add to build path: 第二步:去本地oracle文件夹下找到“TNSNAMES.ORA”文件,打开找到对应数据库的连接字符串,作为jdbc的连接字符串: 第三步:写代码,通过jdbc连接数据库. 从网上找了段代码,做了下修改.以下为查询数据库表中所有字段及字段值类型,遍历数据库表中所有数据(其中xxx均为需要替换的信息): import java.sql.Connection; imp

线程基础:线程(2)——JAVA中的基本线程操作(上)

文章注明来源:http://blog.csdn.net/yinwenjie,主要供自己学习转载用 1.JAVA中线程的状态 1-1.#对象锁 在Java中每一个对象都有一把‘锁’,这个‘锁’可以是开放状态:也可以由某一个线程(或者多个线程)持有‘钥匙’:一旦在系统中某个对象的‘锁’存在至少一把‘钥匙’,那么任何线程操作这个对象,都必须验证是否有‘钥匙’,如果没有则会报IllegalMonitorStateException异常. 可是‘锁芯’(对象独占权)只有一个,那么可以打开这把锁的多个‘钥匙