MySQL Day5

MySQL 学习

目录


MySQL可以使用jdbc进行编程。

进行jdbc编程的时候,需要另外下载组件Connector/J,如果你是在MySQL官网下载的数据库的话,现在8.0版本,有一个MySQL Install,在其中你可以选择相对应的connector从而利用以外的语言进行访问数据库。

在idea中,需要在该项目的Project Structure中的Modules添加Connector/J相对应的包,否则不能够访问。

我的机器上安装的是MySQL 8.0的版本,所以与以往可能有大部分不一样

接下来,我们创建一个test.java,开始今天的jdbc对数据库的访问


Class.forName()

  • Class.forName()

首先得明白Class这个类

Class

是Java中的反射中心,可以通过其中的forName()方法从而获取类Class对象的引用。

Class.forName()方法主要功能是返回一个类,作用是要求 JVM 查找并加载指定的类,也就是说, JVM 会执行该类的静态代码段也即static修饰的部分。而在加载数据库驱动的时候,只能使用Class.forName()方法去加载该驱动

在MySQL8.0中,该驱动在"com.mysql.cj.jdbc.Driver"中,需要注册该驱动

使用语句注册驱动 Class.forName("com.mysql.cj.jdbc.Driver")

返回顶部

数据库URL

在连接数据库时,我们必须使用各种与数据库类型相关的参数,比如主机名、端口号和数据库名等

比如jdbc:mysql://local:3306/test?useSSL=false&serverTimezone=UTC,可以分成四个部分

  • jdbc:mysql://
  • local:3306/
  • test?
  • useSSL=false&serverTimezone=UTC

我不知道这样分得对不对,反正我这样分了我能理解.....

第一部分是JDBC的特定的语法,其本体是这样的jdbc:subprotocol:other stuffsubprotocol用于选择连接到数据库的具体程序。other stuff参数的格式随所使用的subprotocol不同而不同,大可以访问数据库供应商提供的相对一个的文档。

数据库的url明白之后,接下来就是注册驱动器类了

返回顶部

注册驱动器类

通过DriverManager注册驱动器类

  • 在Java程序中加载驱动器类

Class.forName("com.mysql.cj.jdbc.Driver");

  • 设置jdbc.drivers属性

连接到数据库

  • Connection与特定的数据库进行连接,连接上下文的SQL语句并返回结果
  • Statement与数据库进行连接之后,用该连接发送SQL语句
  • ResultSet使用SQL语句之后查询的东西,返回结果集到ResultSet中,

由于ResultSet中不支持滚动去读,只能使用其中的方法next()去一行一行地进行读取

然后接下来就可以使用jdbc和数据库进行连接了,可以使用了。

返回顶部

下面是一个例子:

import java.sql.*;

public class TestForMySQL {
    final static String JDBC_Driver="com.mysql.cj.jdbc.Driver";

    final static String url= "jdbc:mysql:"+/*jdbc:指定特定的数据库*/
            "//localhost:3306/"/**/
            +"test"/*数据库名称*/
            +"?useSSL=false&serverTimezone=UTC";/*固定格式*/

    final static String user="root";
    final static String passwd="12345678";

    public static void main(String[]args){
        Connection connection=null;
        Statement statement=null;

        try{
            Class.forName(JDBC_Driver);//注册驱动
            connection= DriverManager.getConnection(url,user,passwd);//连接端口,加上用户名密码
            statement=connection.createStatement();

            String sqlUse="show databases";

            String sqlCmd="SELECT * FROM words WHERE id>=1 and id<100";//sql语句

            ResultSet resultSet=statement.executeQuery(sqlCmd);//使用语句进行查询

            while(resultSet.next()) {
                int id = resultSet.getInt("id");
                String word = resultSet.getString("word");
                String explains = resultSet.getString("explains");

                System.out.println(id + " " + word + " " + explains);
            }
            //关闭流
            statement.close();
            resultSet.close();
            connection.close();

        }catch (Exception e){
            e.printStackTrace();
        }
        finally {
            try {
                if (statement != null)
                    statement.close();
            }catch (SQLException e) {
                e.printStackTrace();
            }
            try{
                if(connection!=null)
                    connection.close();
            }catch (SQLException e){
                e.printStackTrace();
            }
        }
        System.out.println("结束");


    }
}

返回顶部


Day5 Over

posted @ 2020-03-07 09:27  野生的Lemon柠檬  阅读(181)  评论(0编辑  收藏  举报

呱呱呱呱呱🐸