sql >> Database teknologi >  >> RDS >> Mysql

Java-nybegynder har brug for hjælp til databaseforbindelse

Jeg vil sige, at din kode er et eksempel på mange værste praksisser. Lad mig tælle måderne:

  1. Din Connection-klasse er en dårlig abstraktion, der ikke tilbyder noget ud over java.sql.Connection.
  2. Hvis du bruger din klasse, vil du aldrig komme til at drage fordel af forbindelsespooling.
  3. Du tilslutter din driverklasse, din forbindelses-URL osv. Du kan ikke ændre den uden at redigere og omkompilere. En bedre løsning ville være at eksternalisere sådanne ting.
  4. At udskrive en fejlmeddelelse i catch-blokkene er langt mindre information end at levere hele stakken.
  5. Din kode gør ondt i mine øjne. Det følger ikke Sun Java-kodningsstandarderne.
  6. Dine retrieveData metoden er fuldstændig værdiløs. Hvad vil du gøre med alle de trykte udsagn? Ville det ikke være bedre at indlæse dem i en datastruktur eller et objekt, så resten af ​​din kode måske bruger disse oplysninger?
  7. Det er rowsAffected - "påvirke" er verbet, "effekt" er substantivet. Endnu en variabel, der ikke gør noget godt.

Du er på det forkerte spor. Overvej det.

Jeg tror, ​​du vil finde denne kode mere nyttig.

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;
    }
}


  1. Hvordan konverterer man disse mærkelige karakterer? (ë, Ã, ì, ù, Ã)

  2. SQL-Server og MySQL interoperabilitet?

  3. Hvordan opgraderer jeg osCommerce Database fra v2.2 til v2.3

  4. Hvordan slår man MySQL strict mode til/fra i localhost (xampp)?