Mysql
 sql >> база данни >  >> RDS >> Mysql

Начинаещият в Java се нуждае от помощ при свързване с база данни

Бих казал, че вашият код е пример за много най-лоши практики. Нека преброя начините:

  1. Вашият клас Connection е лоша абстракция, която не предлага нищо повече от това на java.sql.Connection.
  2. Ако използвате своя клас, никога няма да можете да се възползвате от обединяването на връзки.
  3. Свързвате твърдия си клас на драйвера, URL адреса на връзката си и т.н. Не можете да го промените, без да редактирате и прекомпилирате. По-добро решение би било подобни неща да се екстернализират.
  4. Отпечатването на съобщение за грешка в блоковете за хващане е много по-малко информация от предоставянето на цялата трасировка на стека.
  5. Кодът ти ме наранява очите. Той не следва стандартите за кодиране на Sun Java.
  6. Вашите retrieveData методът е напълно безполезен. Какво ще правите с всички тези отпечатани изявления? Не би ли било по-добре да ги заредите в структура от данни или обект, за да може останалата част от кода ви да използва тази информация?
  7. Това е rowsAffected - "afect" е глаголът, "effect" е съществителното. Друга променлива, която не върши никаква работа.

Вие сте на грешен път. Преосмислете го.

Мисля, че този код ще ви бъде по-полезен.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL - Изберете най-новата дата от набор от няколко възможни времеви печати?

  2. дизайн база данни, свързана с атрибут на време

  3. Как да изберете колоните за таблица INNER JOIN в зависимост от стойностите на присъединените масиви

  4. Създайте нова база данни с MySQL Workbench

  5. XAMPP - Грешка:MySQL изключване неочаквано