JDBC第一篇--【介绍JDBC、使用JDBC连接数据库、简单的工具类】
1.什么是JDBC
JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API
2.为什么我们要用JDBC
- 市面上有非常多的数据库,本来我们是需要根据不同的数据库学习不同的API,sun公司为了简化这个操作,定义了JDBC API【接口】
- sun公司只是提供了JDBC API【接口】,数据库厂商负责实现。
- 对于我们来说,操作数据库都是在JDBC API【接口】上,使用不同的数据库,只要用数据库厂商提供的数据库驱动程序即可
- 这大大简化了我们的学习成本
3.简单操作JDBC
步骤:
- 导入MySQL或者Oracle驱动包
- 装载数据库驱动程序
- 获取到与数据库连接
- 获取可以执行SQL语句的对象
- 执行SQL语句
- 关闭连接
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            /*
            * 加载驱动有两种方式
            *
            * 1:会导致驱动会注册两次,过度依赖于mysql的api,脱离的mysql的开发包,程序则无法编译
            * 2:驱动只会加载一次,不需要依赖具体的驱动,灵活性高
            *
            * 我们一般都是使用第二种方式
            * */
            //1.
            //DriverManager.registerDriver(new com.mysql.jdbc.Driver());
            //2.
            Class.forName("com.mysql.jdbc.Driver");
            //获取与数据库连接的对象-Connetcion
            connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/zhongfucheng", "root", "root");
            //获取执行sql语句的statement对象
            statement = connection.createStatement();
            //执行sql语句,拿到结果集
            resultSet = statement.executeQuery("SELECT * FROM users");
            //遍历结果集,得到数据
            while (resultSet.next()) {
                System.out.println(resultSet.getString(1));
                System.out.println(resultSet.getString(2));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            /*
            * 关闭资源,后调用的先关闭
            *
            * 关闭之前,要判断对象是否存在
            * */
            if (resultSet != null) {
                try {
                    resultSet.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (statement != null) {
                try {
                    statement.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (connection != null) {
                try {
                    connection.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
上面我们已经简单使用JDBC去查询数据库的数据了,接下来我们去了解一下上面代码用到的对象
4.Connection对象
客户端与数据库所有的交互都是通过Connection来完成的。
常用的方法:
//创建向数据库发送sql的statement对象。
createcreateStatement()
//创建向数据库发送预编译sql的PrepareSatement对象。
prepareStatement(sql) 
//创建执行存储过程的callableStatement对象
prepareCall(sql)
//设置事务自动提交
setAutoCommit(boolean autoCommit)
//提交事务
commit()
//回滚事务
rollback()
5.Statement对象
Statement对象用于向数据库发送Sql语句,对数据库的增删改查都可以通过此对象发送sql语句完成。
Statement对象的常用方法:
//查询
executeQuery(String sql)
//增删改
executeUpdate(String sql)
//任意sql语句都可以,但是目标不明确,很少用
execute(String sql)
//把多条的sql语句放进同一个批处理中
addBatch(String sql)
//向数据库发送一批sql语句执行
executeBatch()
6.ResultSet对象
ResultSet对象代表Sql语句的执行结果,当Statement对象执行executeQuery()时,会返回一个ResultSet对象
ResultSet对象维护了一个数据行的游标【简单理解成指针】,调用ResultSet.next()方法,可以让游标指向具体的数据行,进行获取该行的数据
常用方法:
//获取任意类型的数据
getObject(String columnName)
//获取指定类型的数据【各种类型,查看API】
getString(String columnName)
//对结果集进行滚动查看的方法
next()
Previous()
absolute(int row)
beforeFirst()
afterLast()
7.写一个简单工具类
通过上面的理解,我们已经能够使用JDBC对数据库的数据进行增删改查了,我们发现,无论增删改查都需要连接数据库,关闭资源,所以我们把连接数据库,释放资源的操作抽取到一个工具类
    /*
    * 连接数据库的driver,url,username,password通过配置文件来配置,可以增加灵活性
    * 当我们需要切换数据库的时候,只需要在配置文件中改以上的信息即可
    *
    * */
    private static String  driver = null;
    private static String  url = null;
    private static String  username = null;
    private static String password = null;
    static {
        try {
            //获取配置文件的读入流
            InputStream inputStream = UtilsDemo.class.getClassLoader().getResourceAsStream("db.properties");
            Properties properties = new Properties();
            properties.load(inputStream);
            //获取配置文件的信息
            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            username = properties.getProperty("username");
            password = properties.getProperty("password");
            //加载驱动类
            Class.forName(driver);
        } catch (IOException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    public static Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url,username,password);
    }
    public static void release(Connection connection, Statement statement, ResultSet resultSet) {
        if (resultSet != null) {
            try {
                resultSet.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (statement != null) {
            try {
                statement.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
        if (connection != null) {
            try {
                connection.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
JDBC第一篇--【介绍JDBC、使用JDBC连接数据库、简单的工具类】的更多相关文章
- Java并发包下锁学习第一篇:介绍及学习安排
		Java并发包下锁学习第一篇:介绍及学习安排 在Java并发编程中,实现锁的方式有两种,分别是:可以使用同步锁(synchronized关键字的锁),还有lock接口下的锁.从今天起,凯哥将带领大家一 ... 
- spring cloud系列教程第一篇-介绍
		spring cloud系列教程第一篇-介绍 前言: 现在Java招聘中最常见的是会微服务开发,微服务已经在国内火了几年了,而且也成了趋势了.那么,微服务只是指spring boot吗?当然不是了,微 ... 
- 工具篇:介绍几个好用的guava工具类
		前言 平时我们都会封装一些处理缓存或其他的小工具.但每个人都封装一次,重复造轮子,有点费时间.有没有一些好的工具库推荐-guava.guava是谷歌基于java封装好的开源库,它的性能.实用性,比我们 ... 
- Python+Selenium中级篇之8-Python自定义封装一个简单的Log类《转载》
		Python+Selenium中级篇之8-Python自定义封装一个简单的Log类: https://blog.csdn.net/u011541946/article/details/70198676 
- JDBC【介绍JDBC、使用JDBC连接数据库、简单的工具类】
		1.什么是JDBC JDBC全称为:Java Data Base Connectivity,它是可以执行SQL语句的Java API 2.为什么我们要用JDBC 市面上有非常多的数据库,本来我们是需要 ... 
- java核心技术第三篇之JDBC第一篇
		01.JDBC_两个重要的概念: 1).什么是数据库驱动程序:由数据库厂商提供,面向某种特定的编程语言所开发的一套访问本数据库的类库. 驱动包一般由两种语言组成,前端是:面向某种特定编程语言的语言:后 ... 
- JDBC | 第一章:  快速开始使用JDBC连接Mysql数据库?
		开始使用基于java的JDBC技术来连接mysql进行msyql数据库简单的CRUD操作 下载对应mysql驱动包 这里我创建maven项目基于maven下载 <!--mysql 驱动--> ... 
- JDBC的增删改写成一个方法,调用一个工具类
		package com.hx.jdbc.connection; import java.sql.Connection; import java.sql.Statement; import com.my ... 
- 【JDBC】Java 连接 MySQL 基本过程以及封装数据库工具类
		一. 常用的JDBC API 1. DriverManager类 : 数据库管理类,用于管理一组JDBC驱动程序的基本服务.应用程序和数据库之间可以通过此类建立连接.常用的静态方法如下 static ... 
随机推荐
- .NET Core迁移技巧之web.config配置文件
			大家都知道.NET Core现在不再支持原来的web.config配置文件了,取而代之的是json或xml配置文件.官方推荐的项目配置方式是使用appsettings.json配置文件,这对现有一些重 ... 
- eval & exec(绕过长度限制思路学习)
			eval & exec知识点记录--原文章phithon,只是记录一下我自己的学习过程. 1.eval & exec if(strlen($param)<17 && ... 
- C#打印九九乘法表
			C#打印九九乘法表... ---------------------------------- using System; using System.Collections.Generic; usin ... 
- 采用OCR识别自动识别财务报表
			一. 财务报表有什么作用 财务报表又叫会计报表,包含:资产负债表.损益表.现金流量表三表.财务报表对企业经营状况有重要的参考意义: n 全面系统地揭示企业一定时期的财务状况.经营成果 ... 
- 第二章 [分布式CMS]
			结构系统:定义的后台 资源云:存在静态资源文件 文档云:文章内容 工具服务:模板.,公共类 Web服务:处理一下数据交互 为什么要做分布式了? 说实话,我也不太清楚,网上说在性能方面比较好,我的理解是 ... 
- C#格式符
			在输出字符串时,使用格式说明 使字符串显示适当的格式,比如:货币格式,或者科学计数法.百分比等. 以下是格式化的数字字符串 格式. {index, alignment: format} 例如: ; ... 
- sql  in 和 exist的区别
			详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp41 select * from A where id in(select ... 
- 遇到的一些Jquery函数
			jQuery.extend() jQuery.merge():函数用于合并两个数组内容到第一个数组. <script> $(function () { ,,], [,,] ... 
- Spring详解(五)------AspectJ 实现AOP
			上一篇博客我们引出了 AOP 的概念,以及 AOP 的具体实现方式.但是为什么要这样实现?以及提出的切入点表达式到底该怎么理解? 这篇博客我们通过对 AspectJ 框架的介绍来详细了解. 1.什么是 ... 
- [C#] .Net Core 全局配置读取管理方法 ConfigurationManager
			最近在学习.Net Core的过程中,发现.Net Framework中常用的ConfigurationManager在Core中竟然被干掉了. 也能理解.Core中使用的配置文件全是Json,不想F ... 
