¡JAVA usa JDBC para conectarse al pozo de la base de datos mysql! !

¡JAVA usa JDBC para conectarse al pozo de la base de datos mysql! !

1. Visualización del código fuente

package com.xuanji.lesson01;

import java.sql.*;

//我的第一个jdbc程序
public class JDBCFirstDemo {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1.加载驱动
        Class.forName("com.mysql.jdbc.Driver");//固定写法,加载驱动
        //2.用户信息和url
        String url="jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&useSSL=true";
        String username="root";
        String password="******";//密码不便展示
        //3.连接成功,返回数据库对象
        Connection connection= DriverManager.getConnection(url,username,password);
        //4.执行SQL的对象
        Statement statement = connection.createStatement();
        //5.执行SQL的对象去执行SQL,可能存在结果,查看返回结果
        String sql="SELECT * FROM sp_type";
        ResultSet resultSet = statement.executeQuery(sql);//返回的结果集,结果集中封装了我们全部的查询出来的结果
        while(resultSet.next()){
            System.out.println("type_id="+resultSet.getObject("type_id"));
            System.out.println("type_name="+resultSet.getObject("type_name"));
            System.out.println("delete_time="+resultSet.getObject("delete_time"));
        }
        //6.释放连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}

Este es el código fuente y no hay ningún problema a primera vista. . . .

Cuando haces clic para ejecutar, comienza lo aterrador, se informan un montón de errores. . . .

2. ¡Ejecute un error! ! !

3. Analizar el error y modificar el código.

Primero echemos un vistazo al mensaje de error.

3.1 Primero:

Cargando clase ` com.mysql.jdbc.Driver '. Esto está desaprobado. La nueva clase de controlador es ` com.mysql.cj.jdbc.Driver '. El controlador se registra automáticamente a través del SPI y la carga manual de la clase de controlador generalmente no es necesaria.

Esta oración nos recuerda que no cargamos correctamente la clase de controlador com.mysql.jdbc.Driver

Luego nos indica que la clase del controlador debe estar en el directorio com.mysql.cj.jdbc.Driver, luego primero encontramos este error, primero cambiamos com.mysql.jdbc.Driver a com.mysql.cj.jdbc. Conductor

(Problema de versión, si usa com.mysql.jdbc.Driver directamente, no hay problema, um, demuestra que su versión está bien ...)

3.2 Error en el segundo párrafo

Excepción en el hilo "main" java.sql.SQLException: El valor de la zona horaria del servidor ' й ׼ʱ ' no se reconoce o representa más de una zona horaria. Debe configurar el servidor o el controlador JDBC (a través de la propiedad de configuración 'serverTimezone') para usar un valor de zona horaria más específico si desea utilizar el soporte de zona horaria.
    en com.mysql.cj.jdbc.exceptions.SQLError.createSQLException (SQLError.java:129)
    en com.mysql.cj.jdbc.exceptions.SQLError.createSQLException (SQLError.java:97)
    en com.mysql.cj.cj .exceptions.SQLError.createSQLException (SQLError.java:89)
    en com.mysql.cj.jdbc.exceptions.SQLError.createSQLException (SQLError.java:63)
    en com.mysql.cj.jdbc.Qexceptions (SQLErLE.xception .java: 73)
    en com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException (SQLExceptionsMapping.java:76)
    en com.mysql.cj.jdbc.ConnectionImpl.createNewIO (ConnectionImpl.java:836)
    en com.mysql.Concj.jdbc. . <init> (ConnectionImpl.java:456)
    en com.mysql.cj.jdbc.ConnectionImpl.getInstance (ConnectionImpl.java:246)
    en com.mysql.cj.jdbc.NonRegisteringDriver.connect (NonRegisteringDriver.java:197)
    en java.sql.DriverManager.getConnection (DriverManager.java:664)
    en java.sql.DriverManager.getConnection (DriverManager.java:247)
    en com.xuanji.lesson01.JDBCFirstDemo.main (JDBCFirstDemo.java:15)
Causado por: com.mysql.cj.exceptions.InvalidConnectionAttributeException: el valor de la zona horaria del servidor ' й ׼ʱ ' no se reconoce o representa más de una zona horaria. Debe configurar el servidor o el controlador JDBC (a través de la propiedad de configuración 'serverTimezone') para usar un valor de zona horaria más específico si desea utilizar el soporte de zona horaria.
    en sun.reflect.NativeConstructorAccessorImpl.newInstance0 (Nativo Método)
    en sun.reflect.NativeConstructorAccessorImpl.newInstance (NativeConstructorAccessorImpl.java:62)
    en sun.reflect.DelegatingConstructorAccessorImpl.newInstance (DelegatingConstructorAccessorImpl.java:45)
    en java.lang.reflect.Constructor .newInstance (Constructor.java:423)
    en com.mysql.cj.exceptions.ExceptionFactory.createException (ExceptionFactory.java:61)
    en com.mysql.cj.exceptions.ExceptionFactory.createException (ExceptionFactory.java:85)
    en com.mysql.cj.util.TimeUtil.getConeonical (TimeUtil.java:132)
    en com.mysql.cj.protocol.a.NativeProtocol.configureTimezone (NativeProtocol.java:2118)
    en com.mysql.cj.protocol.a.NativeProtocol.initServerSession (NativeProtocol.java:2142)
    a com.mysql.cj.jdbc.ConnectionImpl.initializePropsFromServer (ConnectionImpl.java:1310)
    en com.mysql.cj.jdbc.ConnectionImpl.connectOneTryOnly (ConnectionImpl.java:967)
    en com.mysql.cj.Nejdbc.ContenectionImpl ConnectionImpl.java:826)
    ... 6 más

 El segundo párrafo y el tercer párrafo básicamente significan lo mismo, así que hablemos de ello juntos ~~

Primero mire el informe de errores, llegamos a un punto en el que la hora del servidor informa un error. ? ?

Léelo con atención, lo que nos dice es que hay una diferencia en la zona horaria entre nuestra base de datos y el sistema.

¿Cómo resolver este problema? ? ? Muy simple

El problema se puede resolver agregando serverTimezone = GMT a la URL de la conexión JDBC. Si necesita usar la zona horaria GMT + 8, debe escribir GMT% 2B8 (2B es el código ASCII hexadecimal de "+" y "% 2B" es "+" ”), De lo contrario se analizará como vacío.

4. Código modificado

Ahora corrija estos errores primero, y el código corregido es el siguiente:

package com.xuanji.lesson01;

import java.sql.*;

//我的第一个jdbc程序
public class JDBCFirstDemo {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {
        //1.加载驱动
        Class.forName("com.mysql.cj.jdbc.Driver");//固定写法,加载驱动
        //2.用户信息和url
        String url="jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf8&useSSL=true&serverTimezone=GMT";
        String username="root";
        String password="******";//密码不便展示
        //3.连接成功,返回数据库对象
        Connection connection= DriverManager.getConnection(url,username,password);
        //4.执行SQL的对象
        Statement statement = connection.createStatement();
        //5.执行SQL的对象去执行SQL,可能存在结果,查看返回结果
        String sql="SELECT * FROM sp_type";
        ResultSet resultSet = statement.executeQuery(sql);//返回的结果集,结果集中封装了我们全部的查询出来的结果
        while(resultSet.next()){
            System.out.println("type_id="+resultSet.getObject("type_id"));
            System.out.println("type_name="+resultSet.getObject("type_name"));
            System.out.println("delete_time="+resultSet.getObject("delete_time"));
        }
        //6.释放连接
        resultSet.close();
        statement.close();
        connection.close();
    }
}

¡Corre ahora! !

5. Ejecución de resultados:

¡Éxito! ! ! ! No se reporta ningún error, ¡el efecto es lo que queremos! ! ! !

 

Supongo que te gusta

Origin blog.csdn.net/caixuanji/article/details/107202408
Recomendado
Clasificación