JDBC简介

        Jdbc是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新数据库中数据的方法。

一、连接过程

        1.导入jar包

        2.注册驱动

Class.forName("com.mysql.cj.jdbc.Driver");

        3.连接数据库

        实现类DriverManager的getConnection()方法    参数:url,username ,password   mysql的url格式:jdbc:mysql://ip:端口号/数据库名?key=value...

String url = "jdbc:mysql://localhost:3306/text?serverTimezone=GMT";
conn = DriverManager.getConnection(url,"username","password");

 二、操作数据库

        1.创建PreparedStatement对象(PreparedStatement对象会对执行的sql语句进行预编译,以防产生Statement对象的sql注入现象)需要传入执行的sql语句,其中不确定的参数用?代替。

PreparedStatement stmt = connection.prepareStatement(sql);

        2.设置参数(setString/setInt/setDouble/setDate等)

stmt.setString(第几个?(下标从1开始),值);

        3.执行sql语句(由于之前已经传入过sql语句,所以不需要再次传入)

stmt.execute();//一般用于执行DDL返回一个布尔值
stmt.executeUpdate();//可以执行DDL,但一般用于执行DML,返回int值表示更新数据的数量
ResultSet rs = stmt.executeQuery();//只能执行DQL,返回一个结果集

三、结果集(ResultSet)

        结果集(ResultSet)是查询数据库时,返回的一个二维的结果集,我们需要用到ResultSet来遍历结果集,获取每一行的数据

ResultSet rs = stmt.executeQuery();

rs.next()//先将指针指向下移动,再查看当前位置是否为空,是返回false  否返回true
rs.getString(第几列(下表从1开始)/字段名)//getInt,getDouble...

四、Jdbc中的事务

conn.setAutoCommit(false);//设置自动提交为false,等同于开启事务
conn.commit();//程序运行正常,提交
conn.rollback();//放在catch中,捕获异常程序出错回滚事务

五、配置文件

使用配置文件,封装成类,提高代码的复用,减少工作量

//使用properties配置文件
driver = com.mysql.cj.jdbc.Driver
url = jdbc:mysql://localhost:3306/text?serverTimezone=GMT
username = root
password = 123456

封装成类,方便调用

import java.io.IOException;
import java.sql.*;
import java.util.Properties;

public class JdbcUtils {
    private static String driver;
    private static String url;
    private static String username;
    private static String password;
    static {
        try {
            Properties props = new Properties();
            props.load(JdbcUtils.class.getResourceAsStream("jdbc.properties"));
            driver =props.getProperty("driver");
            url =props.getProperty("url");
            username =props.getProperty("username");
            password =props.getProperty("password");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public static Connection getConnection() {
        Connection conn = null;
        try {
            Class.forName(driver);
            conn = DriverManager.getConnection(url,username,password);
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        }
        //连接数据库
        return conn;
    }

    public static void close(PreparedStatement stmt){
        try {
            stmt.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }

    public static void close(Connection conn, PreparedStatement stmt){
        try {
            stmt.close();
            conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值