Java-JDBC快速入门

环境:

jdk版本:1.8
数据库:mysql5.7

1.JDBC

JDBC 是 Java Database Connectivity 的简写,译: Java 数据库链接。故名思意,其作用就是用于链接并对数据库做执行操作的。JDBC 是由Java提供的一套针对关系型数据库操作的接口,由各个数据库厂商实现,即驱动

通过 JDBC 对数据库操作共分为 6 个步骤

1.载入驱动
通过 Class.forName("com.mysql.jdbc.Driver");方法使用当前类加载载入驱动。载入之后 会立即向 DriverManager(后面有提到)注册驱动.

2.获取连接
通过 DriverManager.getConnection(stirng connectionString)获取连接器Connection
参数解析: connectionString:协议://ip地址(域名):端口号/数据库名称

3.创建预编译对象
通过Connection.createStatement()创建Statement

4.执行sql
根据 SQL 语句的特性在 Statement对象的一系列方法中选择对应的方法执行SQL并返回执行结果。

5.处理结果集
Statement不同的执行方法会有不同的结果集,如:ResultSet、数据影响行数…等,根据对应的结果集处理即可。

6.释放资源
最后 一定要调用 Connection.Close()Statement.Close()方法释放Connection和Statement的资源!!!

代码示例:

public class JDBCDemo {
    public static void main(String[] args) throws Exception {
        //载入驱动
        Class.forName("com.mysql.jdbc.Driver");
        //url : 
        String url = "jdbc:mysql://127.0.0.1:3306/blog_dev";
        //用户名
        String userName = "userName";
        //密码
        String password = "password";

        //获取连接器
        Connection connection = getConnection(url, userName, password);

        //定义sql语句
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String dateString = sdf.format(date);
        String sql = String.format("INSERT INTO role(`code`,`name`,`description`,`createtime`,`deleted`) VALUES('%s','%s','%s',NOW(),0)", "Test", "测试", "测试人员", dateString);

        Statement statement = connection.createStatement();

        int count = statement.executeUpdate(sql);
        if (count > 0)
            System.out.println("执行成功");
        else
            System.out.println("执行失败");

        //释放资源
        statement.close();
        connection.close();
    }
}

JDBC API简述:

  1. DriverManager
    作用:管理和注册驱动以及获取数据库链接。

1.1 注册驱动:Class.forName("com.mysql.jdbc.Driver");

PS:从JDBC4.0版本驱动程序开始,已经不需要通过Class.forName()来注册驱动了,JDBC 4.0 驱动程序必须包含该文件META-INF/services/java.sql.Driver。此文件包含 JDBC 驱动程序实现的名称java.sql.Driver,会自动加载jar包中META-INF/services/java.sql.Driver文件中的驱动类。

1.2 获取数据库链接

通过DriverManager.getConnection()方法来获取数据库连接,该方法有三个重载:

  • getConnection(String url)
    url:访问数据库的 url 路径。
    url格式:协议://ip地址(域名):端口号/数据库名称?参数键值对…
    如:jdbc:mysql://127.0.0.1:3306/blog_dev?useSSl=false&user=root&password=123456

  • getConnection(String url, Properties info)
    url:访问数据库的 url 路径。
    info:一个持久的属性集对象。

  • getConnection(String url, String user, String password)
    url:访问数据库的 url 路径。
    user:数据库的用户名。
    password:数据库的密码。

常用的参数

useUnicode
是否使用Unicode字符集,如果参数characterEncoding设置为gb2312或gbk,本参数值必须设置为true
默认:false

characterEncoding
当useUnicode设置为true时,指定字符编码。比如可设置为gb2312或gbk
默认:autodetect

autoReconnect
当数据库连接异常中断时,是否自动重新连接?
默认:false

autoReconnectForPools
是否使用针对数据库连接池的重连策略
默认:false

failOverReadOnly
自动重连成功后,连接是否设置为只读?
默认:true

maxReconnects
autoReconnect设置为true时,重试连接的次数
默认:3

initialTimeout
autoReconnect设置为true时,两次重连之间的时间间隔,单位:秒
默认:2

connectTimeout
和数据库服务器建立socket连接时的超时,单位:毫秒。 0表示永不超时,适用于JDK 1.4及更高版本
默认:0

socketTimeout
socket操作(读写)超时,单位:毫秒。 0表示永不超时
默认:0

useSSL
与服务器进行通信时使用SSL
默认:false

serverTimezone
覆盖时区的检测/映射。当服务器的时区为映射到Java时区时使用
说明:国内一般设置为serverTimezone=GMT。如果不设置,部分情况会出现时差问题。

2.Connection
作用:获取SQL执行对象及事务管理
获取途径:DriverManager.getConnection()

2.1 获取 SQL 执行对象
通过 Connection.createStatement() 方法获取执行普通 SQL 对象。

2.2 事务管理

  • 开启事务
    Connection.setAutoCommit(bool autoCommit);
    autoCommit:是否自动提交事务,True 则自动提交,False 手动提交。
    当 autoCommit = true 时无需再调用 commit() 方法手动提交
    在这里插入图片描述
    当 autoCommit = false 时 必须手动调用 commit() 方法手动提交

  • 提交事务
    Connection.commit();

  • 回滚事务
    Connection.rollback();

3.Statement
作用:执行 SQL 语句

针对不同的 SQL 语句 Statement 会有对应的方法执行。
数据库查询语言分类

DQL:数据库查询语言。关键字:SELECT ... FROM ... WHERE。
DDL :数据库模式定义语言。关键字:CREATE,DROP,ALTER。
DML:数据操纵语言。关键字:INSERT、UPDATE、DELETE。
DCL:数据控制语言 。关键字:GRANT、REVOKE。
TCL:事务控制语言。关键字:COMMIT、ROLLBACK、SAVEPOINT。
DDL,DML,DCL,DQL,TCL共同组成数据库的完整语言。

executeUpdate(string sql)
执行 DDL DML语句,如果执行的是DML语句,返回值则是受影响数据的行数,如果执行的是DDL语句返回值有可能为0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值