数据库开发三:JDBC数据库开发入门一(jdbc概念原理)

文章对应视频出处https://developer.aliyun.com/lesson_1694_13596#_13596

jdbc入门
1 什么是jdbc
    jdbc(java DataBase connectivity) 就是java数据库连接,即用java语言来操作数据库.
    原来我们操作数据库是在控制体使用sql语句来操作数据库,jdbc是用java语言向数据发送sql语句.
2jdbc原理

早期sun公司的天才们想写一可以连接天下所有数据库的API,是当他们刚刚开始时发现这是不可完成的任务,因为个厂商的据库服务差异太大了.后来sun开始与数据库厂商们讨论,是终得出的结论是,由sun提供一套访问数据库的规范(就是一组接口),并提供连接数据库的协标准,然后各个数据库厂商会遵循sun的规供提供一套访问自己公司的数据库服务器的API出来.sun提供的规范命名为jdbc,而各个厂商提供的,遵循了jdbc规范的,可以访问自己据库的API被称之为驱动

package jdbc;
import org.junit.Test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
/**
 * Created by kevin on 2020/3/22.
 */
public class Demo1 {
    @Test
    public void fun1() throws Exception{
        /**
         * 一 jdbc四大参数配置:
         * >driverClassName:com.mysql.jdbc.Driver
         * >url:jdbc:mysql://localhost:3306/test
         * >username:root
         * >password:123
         */
        Class.forName("com.mysql.cj.jdbc.Driver");//这是新版本的老版本为com.mysql.jdbc.Driver,MySQL5用的驱动url是com.mysql.jdbc.Driver,MySQL6以后用的是com.mysql.cj.jdbc.Driver.版本不匹配便会报驱动类已过时的错误.
        String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";//JDBC连接MySQL6 (com.mysql.cj.jdbc.Driver), 需要指定时区serverTimezone
        String username = "root";
        String password = "mysql";
        Connection connection = DriverManager.getConnection(url,username,password);
        System.out.println(connection);
        /**
         * 二、怼数据库的增、删、改
         * 1通过Connection对象创建Statement
         * > Statement语句的发送器,它的功能就是向数据库发送sql语句
         * 2调用他的int exexuteUpdate(String sql) 他可以发送DML、DDL
         */
        //1.通过Connection 得到Statement对象
        Statement statement = connection.createStatement();
        String sql = "insert into stu values('0001','张三','100','男')";
//        String sql = "update stu set name='李四' where number='0001'";
//        String sql = "delete from stu where number='0001'";
        int r = statement.executeUpdate(sql);
        System.out.println(r);
        statement.close();
        connection.close();

    }

    /**
     * 执行查询
     */
    @Test
    public void fun2() throws Exception{
        /**
         * 一、得到Connection
         * 二、得到Statement,发送select语句
         * 三、对查询返回的表格进行解析
         * 四、关闭资源
         */
        /**
         * 一、得到连接
         * 1准备四大连接参数
         */
        String driverClassName = "com.mysql.cj.jdbc.Driver";
        String url = "jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC";
        String username = "root";
        String password = "mysql";
        /**
         * 2、加载驱动类
         */
        Class.forName(driverClassName);
        /**
         * 3、通过剩下的3个参数调用DrierManger的getConnection得到连接
         */
        Connection connection = DriverManager.getConnection(url,username,password);
        /**
         * 二、获取Statement,执行select语句
         * 1.得到Statement对象:Connection的createStatement())方法
         */
        Statement statement = connection.createStatement();
        /**
         * 2.调用Statement的ResultSet rs = executeQuery(String querySql)
         */
        ResultSet resultSet = statement.executeQuery("select * from stu");
        System.out.println(resultSet);
        /**
         * 三、解析ResultSet
         */
        while(resultSet.next()){
            int gender = resultSet.getInt(3);//通过列编号获取值
            String name = resultSet.getString("name");//通过列名获取值
            System.out.println(name+","+gender);
        }
        /**
         * 四、关闭资源
         * 倒关
         */
        resultSet.close();
        statement.close();
        connection.close();//必须关闭(练习时跑完就结束了,但是真实环境一般项目在一直运行会占用资源,可能引起服务器崩溃)
    }
}

代码相关数据库

jdbc代码规范化

1、在try外声明引用的定义

2、在try内为对象实例化

3、在finally中进行关闭,

举例:

public void query(){
    Connection con = null;//在try外给出引用定义
    Statement stmt = null;
    ResultSet rs = null;
    try{
        con = xxx;//在try内对象实例化
        while(rs.next()){
            //xxxxxx  
        }
    }catch(Exception e){
        //xxx
    }finally{
        try{
            if(con != null){
                con.close();//在finally中进行关闭
            }
        }
    }

}
发布了52 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/YKWNDY/article/details/105029927
今日推荐