Mysql
 sql >> Base de données >  >> RDS >> Mysql

Débutant Java a besoin d'aide pour la connexion à la base de données

Je dirais que votre code est un exemple de nombreuses pires pratiques. Laissez-moi compter les chemins :

  1. Votre classe Connection est une mauvaise abstraction qui n'offre rien de plus que java.sql.Connection.
  2. Si vous utilisez votre classe, vous ne pourrez jamais profiter de la mise en commun des connexions.
  3. Vous câblez votre classe de pilote, votre URL de connexion, etc. Vous ne pouvez pas le modifier sans le modifier et le recompiler. Une meilleure solution serait d'externaliser ces choses.
  4. Imprimer un message d'erreur dans les blocs catch représente bien moins d'informations que de fournir la trace complète de la pile.
  5. Votre code me fait mal aux yeux. Il ne respecte pas les normes de codage Sun Java.
  6. Votre retrieveData la méthode ne vaut absolument rien. Que ferez-vous de toutes ces déclarations imprimées ? Ne serait-il pas préférable de les charger dans une structure de données ou un objet afin que le reste de votre code puisse utiliser ces informations ?
  7. C'est rowsAffected - "affecter" est le verbe, "effet" est le nom. Une autre variable qui ne sert à rien.

Vous êtes sur la mauvaise piste. Repensez-y.

Je pense que vous trouverez ce code plus utile.

package persistence;

import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DatabaseUtils
{
    public static Connection createConnection(String driver, String url, String username, String password) throws ClassNotFoundException, SQLException
    {
        Class.forName(driver);

        if ((username == null) || (password == null) || (username.trim().length() == 0) || (password.trim().length() == 0))
        {
            return DriverManager.getConnection(url);
        }
        else
        {
            return DriverManager.getConnection(url, username, password);
        }
    }

    public static void close(Connection connection)
    {
        try
        {
            if (connection != null)
            {
                connection.close();
            }
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }


    public static void close(Statement st)
    {
        try
        {
            if (st != null)
            {
                st.close();
            }
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }

    public static void close(ResultSet rs)
    {
        try
        {
            if (rs != null)
            {
                rs.close();
            }
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }

    public static void rollback(Connection connection)
    {
        try
        {
            if (connection != null)
            {
                connection.rollback();
            }
        }
        catch (SQLException e)
        {
            e.printStackTrace();
        }
    }

    public static List<Map<String, Object>> map(ResultSet rs) throws SQLException
    {
        List<Map<String, Object>> results = new ArrayList<Map<String, Object>>();

        try
        {
            if (rs != null)
            {
                ResultSetMetaData meta = rs.getMetaData();
                int numColumns = meta.getColumnCount();
                while (rs.next())
                {
                    Map<String, Object> row = new HashMap<String, Object>();
                    for (int i = 1; i <= numColumns; ++i)
                    {
                        String name = meta.getColumnName(i);
                        Object value = rs.getObject(i);
                        row.put(name, value);
                    }
                    results.add(row);
                }
            }
        }
        finally
        {
            close(rs);
        }

        return results;
    }
}