JDBC简述

        java Database connectivity(JDBC),即在java中写sql语句,对mysql数据库中数据进行CRUD操作。其相关类库在java.sql.*下面。JDBC质是sum制定好的一套接口。mysql数据库厂家对JBDC接口进行实现。如:

public class MySQL implements JDBC(){

    //获取连接,不同的厂家才能实现连接不同的数据库,如:ORACLE,MYSQL
    public void getConnection(){
        System.out.println("连接mysql数据库");
    }
    
    }

        使用者不需要关心底层是什么数据库,只用关心JDBC接口。如下:

public class Main {
    public static void main(String[] agrs){
        //是什么数据库就new哪个数据库实现的对象
        JDBC jdbc=new MySQL();
        jdbc.getConnection();
        
    }
}

        mysql数据库实现的类在mysql-connector-java-版本-bin.jar(mysql的驱动)。开发JDBC之前,需要把jar包配置到classpath之中。必须能让类加载器能够找到驱动。

一、JDBC执行增删改业务

​
package com.fan;

//mysql5.0以后的版本不支持com.mysql.jdbc.Driver,必须用后面这个
import com.mysql.cj.jdbc.Driver;

import java.sql.*;

/*JDBC编程六步:
* 1,注册驱动(通知java要连接哪个数据库)
* 2,获取数据库连接(开启java和mysql两个进程的通道)
* 3,获取数据库操作对象
* 4,执行SQL语句
* 5,处理查询结果集(第四步是select语句,才有这一步)
* 6,释放连接(JDBC是进程间的通信,占用很多资源)
* */
public class Test {
    public static void main(String[] args) throws SQLException {
        //1,注册驱动
        //使用了多态,后面的com.mysql.jdbc.Driver是mysql实现的java.sql.Driver这个接口
        //两个Driver前缀最多省一个,不然jvm分不清
        java.sql.Driver driver=new Driver();
        DriverManager.registerDriver(driver);

        //2,获取数据库连接
        //url是统一资源定位符,每个url都包括了:
        //协议+IP地址+端口号+资源名
        //协议:提前规定好的数据传输格式
        //端口号:定义某个计算机上的服务
        //资源是指该服务上的某个资源
        //localhost就是本机IP地址,等同于127.0.0.1
        //oracle的url应该写为:oracle:jdbc:thin:@localhost:1521:资源名
        String url="jdbc:mysql://localhost:3306/mydata";String user="root";String password="ysh123";
        //在执行getConnection的时候,底层new了一个com.mysql.cj.jdbc.JDBC4Connection类
        //该类实现的是java.sql.Connection这个接口
        Connection con=DriverManager.getConnection(url,user,password);

        //3,获取操作对象
        //创建一个Statement对象,用来把SQL语句发送到数据库,通过一个连接可以创建多个Statement对象
        Statement stam=con.createStatement();

        //4,执行SQL语句
        String sql="delete from student where sid=11";
        //executeUpdate一般执行update,delete,insert,返回值int类型,表示受影响的记录数
        //而executeQuarry一般执行select语句,返回ResultSet类型
        int count=stam.executeUpdate(sql);
        System.out.println(count);

        //5,释放连接,先释放Statement,再释放Connection
        stam.close();
        con.close();
    }
}

​

二、JDBC处理查询结果

package com.fan;

import java.sql.*;

public class Test {
    public static void main(String[] args) {
      //1,注册驱动
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        Connection con=null;Statement sta=null;
        //2,获取连接
        try{
            String url="jdbc:mysql://localhost:3306/mydata";
            String user="root";String password="ysh123";
            con=DriverManager.getConnection(url,user,password);
            //3,创建连接对象对应的Statement对象
            sta=con.createStatement();
            //4,用sta对象传输SQL语句,executeQuery专门执行查询语句,返回一个ResultSet的对象
            String sql="select sid,sname,ssex from student";
            ResultSet rs=sta.executeQuery(sql);
            //5,处理查询结果集
            //ResultSet中的next()方法,执行后光标后移一位,返回布尔类型表示还有没有下一个元素。最开始不指向数据
            //类似于集合的迭代器
            while(rs.next()){
                System.out.println(rs.getString("sid")+"\t"+rs.getString("sname")+"\t"+rs.getString("ssex"));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally{
            //6,关闭连接对象和Statement对象
            if (con!=null){
                try {
                    con.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            if (sta!=null){
                try {
                    sta.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}

三、用配置文件读取数据

        可以把要输入程序的变量写在一个.properties配置文件中:

driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/mydata
user=root
password=ysh123

        在主程序中用ResourceBoudle调用:

        ResourceBundle db=ResourceBundle.getBundle("resource/db");
        String driver=db.getString("driver");
        String url=db.getString("url");
        String user=db.getString("user");
        String password=db.getString("password");

        这样要连接的数据库发生改变只用修改配置文件,不用修改源码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值