JDBC学习笔记

本文详细介绍了JDBC的基本概念、编程步骤,并通过实例讲解了Statement和PreparedStatement对象的使用,包括Insert、Update、Select操作。同时,讨论了SQL注入问题及数据库连接池的配置,如DBCP和C3P0的配置与使用。
摘要由CSDN通过智能技术生成

01.什么是JDBC

Java DataBase Connectivity(Java语言连接数据库)

02.JDBC的本质是什么?
    JDBC是SUN公司制定的一套接口(interface)
        java.sql.*; (这个软件包下有很多接口。)

03.JDBC编程六步(需要背会)
    
    第一步:注册驱动(作用:告诉Java程序,即将要连接的是哪个品牌的数据库)

    第二步:获取连接(表示JVM的进程和数据库进程之间的通道打开了,这属于进程之间的通信,重量级的,使用完之后一定要关闭通道。)

    第三步:获取数据库操作对象(专门执行sql语句的对象)

    第四步:执行SQL语句(DQL DML....)

    第五步:处理查询结果集(只有当第四步执行的是select语句的时候,才有这第五步处理查询结果集。)

    第六步:释放资源(使用完资源之后一定要关闭资源。Java和数据库属于进程间的通信,开启之后一定要关闭。)

04.第一个jdbc程序

public class TestJdbc {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //导入驱动
        Class.forName("com.mysql.cj.jdbc.Driver");
        //用户信息和url
        String url = "jdbc:mysql://localhost:3306/school?serverTimezone=UTC";
        String username="root";
        String password="123456789";
        //连接成功 数据库对象 connection代表数据库
        Connection connection = DriverManager.getConnection(url, username, password);
        //执行sql对象
        Statement statement = connection.createStatement();
        String sql = "select * from subject";
        //返回结果集
        ResultSet resultSet = statement.executeQuery(sql);
        while (resultSet.next()){
            System.out.println("subjectno"+resultSet.getObject("subjectno"));
            System.out.println("subjectname"+resultSet.getObject("subjectname"));
            System.out.println("classhour"+resultSet.getObject("classhour"));
            System.out.println("gradeid"+resultSet.getObject("gradeid"));
            System.out.println("====================");
        }

        //关闭连接
        resultSet.close();
        statement.close();
        connection.close();

    }
}

05.封装jdbc工具类

package lession1;

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

public class JdbcUtils {
    private static String driver=null;
    private static String url=null;
    private static String username=null;
    private static String password=null;
    static {
        try {
            InputStream inputStream = JdbcUtils.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 (Exception e) {
            e.printStackTrace();
        }finally {

        }

    }
    //获取连接
    public Connection getConnection() throws SQLException {
        return DriverManager.getConnection(url,username,password);
    }
    //关闭连接
    public 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();
            }
        }
    }
}

 Statement对象

Delete 

package lession1;

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class TestDelete {
    public static void main(String[] args) {
        Connection connection=null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            connection = JdbcUtils.getConnection();
            statement=connection.createStatement();
            String sql = "delete from student where id=3";
            int i = statement.executeUpdate(s
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值