JDBC操作数据库

沙海
沙海
沙海
165
文章
2
评论
2018年7月11日23:01:09 评论 107 3623字阅读12分4秒

操作所有数据库的方式

  1. 使用第三方图形化工具来访问MySQL:SQLyog、Navicat、SQLWave等
  2. 使用DOS命令行方式
  3. 核心:通过Java来访问MySQL数据库,今天要学习的内容

JDBC

概述

JDBC: Java DataBase Connectity —- java数据库的连接

是一种专门用于执行SQL语句的Java API,可以为多种关系数据库提供统一的访问,它由一组用Java语言编写的接口组成

java代码要想操作各种数据库就得使用JDBC

JDBC的由来

JDBC规范定义接口,具体的实现由各大数据库厂商来实现 ,JDBC是Java访问数据库的标准规范。真正怎么操作 数据库还需要具体的实现类,也就是数据库驱动(第三方JAR包)。每个数据库厂商根据自家数据库方式编写好自己数据库的驱动。所以我们只需要会调用JDBC接口中的方法即可。数据库驱动由数据库厂商提供。

我们在用java代码操作数据库时只需要会使用JDBC接口中的方法即可,使用简单

入门案例-使用java代码对数据库进行数据插入

前提:操作哪个数据库就需要导入哪个数据库的驱动包

jdbc的使用步骤:

1.加载驱动

2.获取连接

3.编写sql

4.获取语句的执行者

5.执行sql并返回结果集

6.处理结果集

7.释放资源

// 使用java代码操作数据库做添加
public class HelloJdbc {
    @Test
    public void saveTest() throws ClassNotFoundException, 
                                  SQLException {
        // 条件:操作谁就要导入谁的驱动包 mysql驱动包右键选择Add as Library
        //1 用反射方式加载驱动(mysql5.0后可以不写,静态代码块,浪费)
        //Class.forName("com.mysql.jdbc.Driver");
        //2 获取数据库的连接
        Connection connection = DriverManager.getConnection
        ("jdbc:mysql://localhost:3306/db4", "root", "root");
        //3 获取执行sql语句的对象
        Statement statement = connection.createStatement();
        //4 编写sql语句
        String sql="INSERT INTO account VALUES(NULL,'rose2',1000)";
        //5 执行sql语句
        // 返回值:数据库受影响的行数
        int count = statement.executeUpdate(sql);
        System.out.println(count);
        //6 释放资源
        statement.close();
        connection.close();
    }

JDBC API详解

DriverManager:类

方法作用:

1 加载驱动

static void registerDriver(Driver driver)    底层加载驱动了2  不建议使用
反射: Class.forName("com.mysql.jdbc.Driver")   底层加载驱动了1

2 获取数据库连接的对象

static Connection getConnection(String url, String user, String password);
Url:数据库的地址   固定格式:jdbc:要连的数据库://数据库地址:端口号/哪个数据库
user:数据库的用户名
Password:数据库的密码
如果数据出现乱码需要加上参数: ?characterEncoding=utf8,表示让数据库以UTF-8编码来处理数据。 如:
jdbc:要连的数据库://数据库地址:端口号/哪个数据库?characterEncoding=utf8    

Connection:接口

方法作用:

1 可以获取执行SQL语句的对象(语句执行者)

Statement createStatement();获取语句的执行者  --(不安全)
PreparedStatement  prepareStatement();获取语句的执行者  --用它

2 操作事务

void setAutoCommit(boolean autoCommit) ;  ---start Transaction
false:开启事务, ture:关闭事务(默认)
void commit();  ---commit
提交事务
void rollback(); ---rollback
回滚事务

Statement:接口

方法作用:

1 执行sql语句

executeUpdate() 执行的是增删改语句

返回值是int类型 代表受影响的行数

executeQuery() 执行的是查询语句

返回的值是ResultSet类型对象 称为:结果集对象

Resultset:接口

方法作用:

1 封装查询语句的结果集

next() 可以让指针向下移动一行 默认在第一行之前 返回值是boolean true:代表有数据 false: 代表没数据

2 获取结果集中每一行的数据

get类型(int 列的位置)

get类型(String 列名)

编写JDBC的工具类实现数据的增删改查

工具类:可以将一些重复的代码进行抽取封装,以便于复用,简化代码开发

通过上面代码的编写会发现每次去执行SQL语句都需要注册驱动,获取连接,以及释放资源。 发现很多重复的劳动,我们可以将重复的代码抽取出来定义一个工具类,直接调用方法,可以简化代码。

那么我们接下来定义一个JDBCUtils 类。把注册驱动,获取连接,以及释放资源的代码放到这个类的方法 中。以后直接调用该工具类的方法即可。

JDBC 操作事务

Connection: 
    void setAutoCommit(boolean autoCommit) ;
    false:开启事务 ture:关闭事务(默认的)
    void commit();
    提交事务
    void rollback();
    回滚事务
ps:在使用手动事务时,必须要抓取异常,在catch块中进行回滚事务.
   只要有事务,就必须try,catch捕捉处理  查询有没有事务都行

需求:使用JDBC的事务操作完成转账案例

模拟用户登录功能

需求:
     我们在控制台输入用户名和密码,输入完用户名和密码后,获取输入的值,使用jdbc操作数据库,完成登录功能.
     找到了:登录成功   找不到:用户名或密码错误  
 技术分析:
     jdbc
 代码实现:
 创建用户表:
     create table user (
       id int primary key auto_increment,
       name varchar(20),
       password varchar(20)
   );
   insert into user values(null,"tom","111"),(null,"rose","222"),(null,"jack","333");

总结

jdbc:是java提供的一套规范,java代码操作数据库的桥梁 
java代码要想操作数据库一定得使用jdbc 
                jdbcTemplate
                dbutils
                mybatis
                hibernate
jdbc的操作:固定步骤
1 加载驱动
2 获取连接
3 获取语句执行者
4 编写sql语句
5 执行sql语句
6 处理结果集 (查询特有)
7 释放资源
自定义了一个jdbc工具类: 127这三个步骤抽到了工具类中,以便与复用  (作业)
jdbc中的数据事务控制:Connection
setAUtoCommit(boolean) false:手动 true:自动
commmit() 手动提交
rollback() 数据回滚
ps:只要涉及事务就必须try catch
作业:使用jdbc的工具类完成登录案例
     使用jdbc的工具类完成转账案例

DCL (了解)

#DCL语句(了解)
#创建用户
#命令格式:CREATE USER '用户名'@'主机地址' IDENTIFIED BY '密码';
CREATE USER 'tom'@'localhost' IDENTIFIED BY '123';
#默认没有任何权限 什么都做不了
#tom用户分配权限
#命令格式:GRANT 权限1, 权限2... ON 数据库名.表名 TO '用户名'@'主机名';
GRANT ALL ON db3.* TO 'tom'@'localhost';
#查看权限
#命令格式 SHOW GRANTS FOR '用户名'@'主机名';
SHOW GRANTS FOR 'tom'@'localhost'
#撤销权限
#命令格式:REVOKE 权限1, 权限2... ON 数据库.表名 FROM '用户名'@'主机名';
REVOKE ALL ON db3.* FROM 'tom'@'localhost';
#给普通用户修改密码
#特点:需要root用户先登录 再使用命令去修改普通用户的密码
#格式:set password for '用户名'@'主机名' = password('新密码');
#删除用户
#命令格式:DROP USER '用户名'@'主机名';
DROP USER 'tom'@'localhost';
#给root用户修改密码
#特点:不需要登录 直接操作命令即可
#格式:mysqladmin -uroot -p password 新密码
继续阅读
weinxin
资源分享QQ群
本站是一个IT技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
沙海
  • 版权声明:本站是一个IT技术分享社区,沙海技术团队的技术分享社区,我们会经常分享资源和教程。
  • 转载请注明:JDBC操作数据库 - Java秀 ☜(ˆ▽ˆ)
0011-基于Java的学生宿舍管理系统的设计与实现源码
0012-基于Java的班级信息管理系统的设计与实现源码
0006-基于Java的网上书店的设计与实现
0007-基于微信平台的消息推送系统的研发源码
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: