【数据库】--- JDBC

概述

Java Database Connectivity(Java语言连接数据库),是一套由SUN公司开发的,操作数据库的API,专用于操作数据库。此套API存在于java.sql. *, 这套API是由SUN公司制定,各大数据库厂家根据自己产品的实现原理进行实现(即为驱动)。在使用时我们仅仅需要使用SUN公司制定的接口书写代码,就可以实现对数据库的操作。

JDBC-MySQL

如果我们需要使用Java语言对MySQL数据库进行操作,则需要使用MySQL数据库针对Java制定的操作数据库接口的实现类,此类由MySQL厂家提供,位于MySQL官网,地址为:MySQL驱动下载地址(包含在MySQL数据库下载包中)

使用Java操作MySQL数据库

使用Java程序操作MySQL数据库的基本操作分为六步。

注册驱动

使用java.sql.DriverManager.registerDriver(Driver driver)方法选取驱动。

示例:

 		//注册驱动
        DriverManager.registerDriver(new com.mysql.cj.jdbc.Driver());

取得连接

使用java.sql.DriverManager.getConnection(String url, String user, String password)连接数据库。

		//连接数据库
        String url = "jdbc:mysql://localhost:3306/test";//test为要操作的数据库
        String userName = "root";
        String password = "907282050";
        Connection connection = DriverManager.getConnection(url,userName,password);

获取数据库操作对象

Statement 对象即为操作数据库的对象,我们通过Statement 来对URL中的数据库进行增删改查等操作。

		  //获取数据库操作对象
            String sql = "select * from dept where User = ?";
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
                //为sql语句指定值(下标从1开始)
            preparedStatement.setString(1,"001");

执行SQL语句

statement的每种操作有多个方法重载,可以执行批量语句,并返回KEY。executeupdate (insert/delete/update)执行增删改。其他方法请查阅java.sql.Statement

		 	 //执行SQL语句
            resultSet = preparedStatement.executeQuery();

处理查询结果集

 	  //处理查询结果集
            String s = "";
            while (resultSet.next())
                //使用从1开始的下标读取指定列的数据
                s = resultSet.getString(1);

释放资源

在数据库操作完毕后必须要关闭资源并且要遵循从小到大依次关闭。

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

完整示例

将连接数据库的三个参数和驱动位置写入到配置.proerpties文件中,利用反射MySQL实现的Driver类,其中中的静态代码块已经执行了创建Driver对象。

import java.sql.*;
import java.util.ResourceBundle;

public class MyJdbc {

    public static void main(String[] args)  {

        Connection connection = null;
        PreparedStatement statement = null;
        ResultSet resultSet = null;
        //使用资源绑定器读取资源
        ResourceBundle bundle = ResourceBundle.getBundle("jdbc");
        try {
            //注册驱动
            Class.forName(bundle.getString("className"));

            //连接数据库
            DriverManager.getConnection(
                    bundle.getString("url"),
                    bundle.getString("userName"),
                    bundle.getString("password")
            );

            //获取数据库操作对象
            String sql = "select * from dept where User = ?";
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
                //为sql语句指定值(下标从1开始)
            preparedStatement.setString(1,"001");

            //执行SQL语句
            resultSet = preparedStatement.executeQuery();

            //处理查询结果集
            String s = "";
            while (resultSet.next())
                //使用从1开始的下标读取指定列的数据
                s = resultSet.getString(1);

        } catch (SQLException | ClassNotFoundException throwables) {
            throwables.printStackTrace();
        } finally {
            //释放资源
            if (resultSet != null){
                try {
                    resultSet.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if (statement != null){
                try {
                    statement.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }
            if (connection != null){
                try {
                    connection.close();
                } catch (SQLException throwables) {
                    throwables.printStackTrace();
                }
            }

        }




    }
}


事务

JDBC中的事务是自动提交的,只要执行任意一条DML语句,则自动提交一次。这是JDBC默认的事务行为,但是在实际的业务当中,通常都是条DML语句共同联合才能完成的,必须保证他们这些DML语句在同一个事务中同时成功或者同时先败。

在连接数据库后事务设置为手动

 //设置事务为手动提交                      
 connection.setAutoCommit(false); 

操作成功后提交事务

 //提交事务                 
 connection.commit();   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值