51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

java 连接mysql demo

java 连接mysql demo

package com.baimei.demo01_jdbc;

import com.mysql.jdbc.Driver;
import org.junit.Test;

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

/*
    案例: 演示JDBC入门案例.

    JDBC简介:
        概述:
            全称叫Java DataBase Connectivity, Java数据库连接, 就是通过Java代码操作不同的数据库.
        原理:
            由Sun公司提供统一的规则,规范(JDBC规范), 具体的实现和体现交给不同的数据库厂商来做.
            即: 我们要连接哪个数据库, 只要导入它的驱动(数据库厂商提供)即可.
        核心作用:
            1. 连接不同的数据库.
            2. 向数据库发送指令(SQL语句).
            3. 接收返回的结果集.
        JDBC入门案例:
            JDBC查询表数据.
        JDBC的核心步骤:
            0. 导入指定数据库的驱动(就是 jar包), 即: 连接哪个库, 就导入谁的驱动.
            1. 注册驱动.
            2. 获取连接对象.
            3. 根据连接对象, 获取可以执行SQL语句的对象.
            4. 执行SQL语句, 获取结果集.
            5. 操作结果集.
            6. 释放资源.

        JDBC的相关API介绍:
            DriverManager类解释:
                概述:
                    它是一个类, 表示驱动管理者, 主要用于: 注册驱动 和 获取连接对象的.
                成员方法:
                    public static void registerDriver(Driver driver);
                        注册驱动, 但是这种方式会导致驱动注册两次, 实际开发没人用.

                    public static Connection getConnection(String url, String username, String password);
                        获取连接对象的, 三个参数的解释如下:
                        参数1: 数据库连接字符串
                            格式:
                                协议:子协议://要连接的数据库的ip地址:端口号/具体的要连接的数据库.
                            示例:
                                jdbc:mysql://192.168.30.68:3306/day06
                                jdbc:mysql://localhost:3306/day06
                                jdbc:mysql://127.0.0.1:3306/day06
                                jdbc:mysql:///day06    如果操作本机, 可以省略: 主机名和端口号

           Connection接口:
                概述:
                    它表示连接对象, 即: Java 和 不同数据库之间的连接对象, 主要负责: 事务管理, 获取可以执行SQL语句的对象.
                成员方法:
                    事务管理方法:
                        setAutoCommit(), commit(), rollback()
                    获取可以执行SQL语句的对象:
                        public Statement createStatement();
                            获取可以执行SQL语句的对象, 没有预编译功能, 会发生SQL注入攻击问题.
                        public PreparedStatement prepareStatement(String sql);
                            获取可以执行SQL语句的对象, 有预编译功能, 不会发生SQL注入攻击问题.

           Statement接口:
                概述:
                    它表示可以执行SQL语句的对象, 没有预编译功能, 主要负责: 批处理, 执行SQL语句, 获取结果集.
                作用:
                    关于批处理的方法:
                        addBatch(), executeBatch(), clearBatch();
                    执行SQL语句, 获取结果集:
                        public ResultSet executeQuery(String sql)      执行查询语句, 获取结果集.
                        public int executeUpdate(String sql)           执行更新(增, 删, 改)语句, 获取结果集.

           ResultSet接口:
                概述:
                    它表示执行完查询语句后返回的结果集(本质是一张结果表), 主要用于获取 数据.
                成员方法:
                    public boolean next();      判断结果集中是否有下一条数据, 类似于  Iterator#hasNext()
                    public Xxx getXxx(int columnIndex);     根据列的编号获取列的数据, 编号从 1 开始.
                    public Xxx getXxx(String columnName);   根据列的名字获取列的数据, 推荐使用.
 */
public class Demo01 {
    //JDBC入门案例, 最粗糙版.
    @Test
    public void show1() throws Exception {
        //1. 注册驱动.
        DriverManager.registerDriver(new Driver());
        //2. 获取连接对象.
        Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day06", "root", "123456");
        //3. 根据连接对象, 获取可以执行SQL语句的对象.
        Statement stat = conn.createStatement();
        //4. 执行SQL语句, 获取结果集.
        String sql = "select * from users;";
        ResultSet rs = stat.executeQuery(sql);
        //5. 操作结果集.
        while (rs.next()) {      //类似于Iterator#hasNext()
            int uid = rs.getInt("uid");
            String username = rs.getString("username");
            String password = rs.getString("password");
            System.out.println(uid + ", " + username + ", " + password);
        }
        //6. 释放资源.
        rs.close();
        stat.close();
        conn.close();
    }

    //JDBC的相关API解释之: DriverManager类
    @Test
    public void show2() throws Exception {
        //1. 注册驱动.
        //DriverManager.registerDriver(new Driver());

        //实际开发注册驱动方式: 反射.
        Class.forName("com.mysql.jdbc.Driver");

        //2. 获取连接对象.
        //Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/day06", "root", "123456");
        Connection conn = DriverManager.getConnection("jdbc:mysql:///day06", "root", "123456");


        //3. 根据连接对象, 获取可以执行SQL语句的对象.
        Statement stat = conn.createStatement();
        //4. 执行SQL语句, 获取结果集.
        String sql = "select * from users;";
        ResultSet rs = stat.executeQuery(sql);
        //5. 操作结果集.
        while (rs.next()) {      //类似于Iterator#hasNext()
            int uid = rs.getInt("uid");
            String username = rs.getString("username");
            String password = rs.getString("password");
            System.out.println(uid + ", " + username + ", " + password);
        }
        //6. 释放资源.
        rs.close();
        stat.close();
        conn.close();
    }

    //JDBC的相关API解释之: Connection接口, 代码同上

    //JDBC的相关API解释之: Statement接口, 代码同上

    //JDBC的相关API解释之: ResultSet接口
    @Test
    public void show3() throws Exception {
        //1. 注册驱动.
        Class.forName("com.mysql.jdbc.Driver");

        //2. 获取连接对象.
//        Connection conn = DriverManager.getConnection("jdbc:mysql:///day06", "root", "123456");
        Connection conn = DriverManager.getConnection("jdbc:mysql://192.168.88.166:3306/tags_new", "root", "123456");

        //3. 根据连接对象, 获取可以执行SQL语句的对象.
        Statement stat = conn.createStatement();
        //4. 执行SQL语句, 获取结果集.
        String sql = "select tag_id from tbl_model;";
//        String sql = "select username, uid, password from users;";
        ResultSet rs = stat.executeQuery(sql);


        //5. 操作结果集.
        while (rs.next()) {
            //方式1: 根据列的编号获取.
            /*int uid = rs.getInt(1);
            String username = rs.getString(2);
            String password = rs.getString(3);*/

            //方式2: 根据列的名字获取.
//           int uid = rs.getInt("uid");
//           String username = rs.getString("username");
//           String password = rs.getString("password");
//            System.out.println(uid + ", " + username + ", " + password);

            int uid = rs.getInt("tag_id");

            System.out.println(uid );

        }


        //6. 释放资源.
        rs.close();
        stat.close();
        conn.close();
    }


    //JDBC入门案例: 最终版.
}

下载:

day06_JDBC&Thread.rar: https://url69.ctfile.com/f/253469-871769820-657af8?p=2206 (访问密码: 2206)

赞(8)
未经允许不得转载:工具盒子 » java 连接mysql demo