连接MySQL数据库

查询MySQL数据库的内容

1、首先在MySQL里面建立一个库和表,插入数据。

连接MySQL数据库_第1张图片建库!
连接MySQL数据库_第2张图片
接着下一步 建表语句
连接MySQL数据库_第3张图片如图所示,数据也插入里面了。
2、打开idea,新建一个Javaproject,
将jar包导入src中 点击图中选项
连接MySQL数据库_第4张图片

在src里面建立一个tool工具包,然后在里面建立一个util 工具类:

在package cn.hp;

import cn.hp.model.Student;

import java.sql.*;
import java.util.ArrayList;

public class Test01 {

    public static void main(String[] args) throws SQLException, ClassNotFoundException {
        // jdbc操作
//        test1(1,"1' or '1'='1");
        test2();
    }

    public static void test1(int id , String sname) throws ClassNotFoundException, SQLException {
//      1、加载驱动  选择当前使用的数据库   选择了mysql
            Class.forName("com.mysql.jdbc.Driver");
//      2、创建一个连接    设计模式的理念  1、提升了安全性   2、运行时的性能    3、代码的优美   4、代码的可拓展(方便升级改造)
//        一个方法 5000行代码
        Connection connectionName = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?characterEncoding=utf8&useSSL=true","root","root");
//      3、新建一个 查询页面 用来编写sql的    sql语句编辑器
//
        Statement statement = connectionName.createStatement();
//      4、编写sql语句
//      二进制数据   21:  101010  >> 1  --> 42
        String sql = "select * from student where id = " +id +" and sname = '"+sname+"' ";
//      5、执行sql,使用statement  获取 ResultSet 结果集 ( 表类型 行 列 )
//          查询的结果集 : 4种 单行单列  --> 基本数据类型接收
//                            单行多列  --> 使用对象进行接收
//                            多行单列  --> 使用集合(基本数据类型)进行接收
//                            多行多列  -->  使用集合(对象)进行接收

        ResultSet resultSet = statement.executeQuery(sql);
//        存在一个游标 ,这个表示当前正在读取第几行的数据  默认在 字段上 不在记录上,
//          想让游标到记录上,需要使用next()将游标下移
//        System.out.println(resultSet.isBeforeFirst() +" " + resultSet.getRow());
//        代表第0行的数据  字段名称 列的数量
//        ResultSetMetaData metaData = resultSet.getMetaData();
//        for (int i = 1 ; i <= metaData.getColumnCount() ; i ++){
//            System.out.print(metaData.getColumnName(i));
//            System.out.println(metaData.getColumnLabel(i));
//        }

        ArrayList list = new ArrayList();
        while (resultSet.next()){
//            保存数据库中的多行多列 数据
//            每走一次循环,创建一个对象, 使用对象 保存当前行的数据
            Student student = new Student(
//              从数结果集的表中 使用int类型的 表示获取当前行的第1列  使用string类型的参数 表示获取当前字段的列
            resultSet.getInt(1),
            resultSet.getString(2),
            resultSet.getString(3),
            resultSet.getString("ssex")
            );
            list.add(student);
//            System.out.println( "当前下标位置" + resultSet.getRow()
//                    +"   当前是否第一行" +resultSet.isFirst() + "   "
//                    + resultSet.isLast() + "   " +resultSet.isAfterLast());
        }
        System.out.println(list);
//        resultSet.previous();
//        System.out.println(resultSet.isAfterLast() + "  "+ resultSet.getRow());
//        int i = resultSet.getInt(1);
//        System.out.println(i);
//        使用Java中的容器( 基本数据类型、数组(长度固定)、集合(长度可变)、对象 ) 保存 数据库查询的数据

        // 关闭资源数据   关闭的是对象, 只关注自己创建的对象 ;
        resultSet.close();
        statement.close();
        connectionName.close();
    }

//    预编译 编译器
    public static void test2() throws ClassNotFoundException, SQLException {
//        1、加载驱动  选择当前使用的数据库   选择了mysql
        Class.forName("com.mysql.jdbc.Driver");
//      2、创建一个连接    设计模式的理念  1、提升了安全性   2、运行时的性能    3、代码的优美   4、代码的可拓展(方便升级改造)
//        一个方法 5000行代码
        Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/student?useSSL=false&characterEncoding=utf8","root","root");
//      3、新建一个 查询页面 用来编写sql的    sql语句预编辑器 PreparedStatement
//        先将sql与使用正确的方式 拼接完成  速度和 statement 比 会慢很多 但是 安全性能高 能够防止sql注入
//        把sql语句中的条件 使用 ? 代替
//        把条件内容 当成 参数 交给 预编译器 让他自己拼接
        String sql = "select * from student where id = ? and sname = ?";
        Object [] strs = {1,"赵雷"};
        PreparedStatement preparedStatement = connection.prepareStatement(sql);
        preparedStatement.setObject(1,strs[0]);
        preparedStatement.setObject(2,strs[1]);
//        直接调用方法 表示 执行已经拼接好的sql语句
        ResultSet resultSet = preparedStatement.executeQuery();
        ArrayList list = new ArrayList();
        while (resultSet.next()){
//            保存数据库中的多行多列 数据
//            每走一次循环,创建一个对象, 使用对象 保存当前行的数据
            Student student = new Student(
//              从数结果集的表中 使用int类型的 表示获取当前行的第1列  使用string类型的参数 表示获取当前字段的列
                    resultSet.getInt(1),
                    resultSet.getString(2),
                    resultSet.getString(3),
                    resultSet.getString("ssex")
            );
            list.add(student);
//            System.out.println( "当前下标位置" + resultSet.getRow()
//                    +"   当前是否第一行" +resultSet.isFirst() + "   "
//                    + resultSet.isLast() + "   " +resultSet.isAfterLast());
        }
        System.out.println(list);
//        resultSet.previous();
//        System.out.println(resultSet.isAfterLast() + "  "+ resultSet.getRow());
//        int i = resultSet.getInt(1);
//        System.out.println(i);
//        使用Java中的容器( 基本数据类型、数组(长度固定)、集合(长度可变)、对象 ) 保存 数据库查询的数据

        // 关闭资源数据   关闭的是对象, 只关注自己创建的对象 ;
        resultSet.close();
        preparedStatement.close();
        connection.close();
    }
}

你可能感兴趣的:(mysql,java)