Connectez-vous à MySQL dans Idea et insérez les données avec succès, mais actualisez la table dans Navicat et il n'y a pas de données ?

Table des matières

1. Il y a un problème :

Deuxièmement, essayez de résoudre :

3. J'ai trouvé le problème :

Quatrièmement, la solution :


1. Il y a un problème :

        Lors de l'écriture d'un travail de base de données volumineux, après vous être connecté à MySQL dans l'idée, testez la méthode d'insertion dao, il n'y a pas d'erreur dans la console et la question d'affichage ajoute des données avec succès. Cependant, il n'y a aucune donnée lorsque la table est actualisée dans navicat. (Ce programme est ordinaire. Architecture à trois niveaux, JDBC frottant à la main)

 

Deuxièmement, essayez de résoudre :

        1. Modifiez le fichier de configuration jdbc.properties.

        2. Modifiez la configuration de la base de données.

        3. Vérifiez le code partout.

        Alors après m'être cassé la tête toute la nuit, j'ai utilisé le code de mon camarade de classe le lendemain et j'ai découvert qu'il pouvait se connecter normalement, donc après avoir remplacé les codes un par un, le même jdbc.properties, la même table de base de données... j'ai finalement découvert qu'il s'agit d'un package util. Le problème avec le code ci-dessous.

3. J'ai trouvé le problème :

        1. Étant donné que le code écrit lors de l'apprentissage de JavaWeb dans Shang Silicon Valley est directement transféré, dans la classe JdbcUtils, la méthode de connexion à la base de données de transaction de traitement de filtre est utilisée, car la validation et l'annulation de la transaction initialement utilisée dans le filtre ne sont pas disponibles. Le problème se pose lors de l'utilisation de filtres.

        2.

connection.close();//Ferme la validation automatique de la transaction.

         Dans la gestion des transactions, la ligne de code "fermer la validation automatique de la transaction" de la transaction fera que la connexion à la base de données obtenue ne validera plus automatiquement la transaction.


    /**
     * 提交事务,并关闭释放连接.
     */
    public static void commitAndClose() {
        Connection connection = conns.get();
        if (connection != null) {
            try {
                connection.commit();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    connection.close();//关闭事务的自动提交.
                } catch (SQLException e) {
                    throw new RuntimeException(e);
                }
            }
        }
        conns.remove();
    }

        Code source de JdbcUtils :

package com.my.util;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

/**
 * @author sihua
 * @create 2022-10-30-20:51
 */
public class JdbcUtilsFilter {

    private static DruidDataSource dataSource;
    private static ThreadLocal<Connection> conns = new ThreadLocal<>();

    static {
        try {
            Properties properties = new Properties();
            //读取jdbc.properties属性配置文件.
            InputStream inputStream = JdbcUtilsFilter.class.getClassLoader().
                    getResourceAsStream("jdbc.properties");
            //从流中加载数据
            properties.load(inputStream);
            //创建数据库连接池.
            dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);

//            System.out.println(dataSource.getConnection());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 获取数据库连接池中的连接.
     * 如果返回null,说明获取连接失败.
     */
    public static Connection getConnection() {
        Connection conn = conns.get();
        if (conn == null) {
            try {
                conn = dataSource.getConnection();
                conns.set(conn);
                conn.setAutoCommit(false);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        return conn;
    }

    /**
     * 提交事务,并关闭释放连接.
     */
    public static void commitAndClose() {
        Connection connection = conns.get();
        if (connection != null) {
            try {
                connection.commit();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    connection.close();
                } catch (SQLException e) {
                    throw new RuntimeException(e);
                }
            }
        }
        conns.remove();
    }


    /**
     * 关闭连接,放回数据库连接池
     */
//    public static void close(Connection conn) {
//        if (conn != null) {
//            try {
//                conn.close();
//            } catch (SQLException e) {
//                e.printStackTrace();
//            }
//        }
//    }

    /**
     * 回滚事务,并关闭释放连接.
     */
    public static void rollBackAndClose() {
        Connection connection = conns.get();
        if (connection != null) {
            try {
                connection.rollback();
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                try {
                    connection.close();
                } catch (SQLException e) {
                    throw new RuntimeException(e);
                }
            }
        }
        conns.remove();
    }

}

Quatrièmement, la solution :

        Supprimez le filtre pour obtenir la méthode de connexion.

package com.my.util;

import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.pool.DruidDataSourceFactory;

import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

public class JdbcUtils {

    private static DruidDataSource dataSource;

    static {
        try {
            Properties properties = new Properties();
            // 读取 jdbc.properties属性配置文件
            InputStream inputStream = JdbcUtils.class.getClassLoader().getResourceAsStream("jdbc.properties");
            // 从流中加载数据
            properties.load(inputStream);
            // 创建 数据库连接 池
            dataSource = (DruidDataSource) DruidDataSourceFactory.createDataSource(properties);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }



    /**
     * 获取数据库连接池中的连接
     * @return 如果返回null,说明获取连接失败<br/>有值就是获取连接成功
     */
    public static Connection getConnection(){

        Connection conn = null;

        try {
            conn = dataSource.getConnection();
        } catch (Exception e) {
            e.printStackTrace();
        }

        return conn;
    }

    /**
     * 关闭连接,放回数据库连接池
     * @param conn
     */
    public static void close(Connection conn){
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

}

(J'aimerais utiliser ce blog pour me donner une longue mémoire.)

Je suppose que tu aimes

Origine blog.csdn.net/SIHUAZERO/article/details/131013182
conseillé
Classement