Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Pemula Java membutuhkan bantuan dalam koneksi database

Saya akan mengatakan kode Anda adalah contoh dari banyak praktik terburuk. Biarkan saya menghitung caranya:

  1. Kelas Koneksi Anda adalah abstraksi buruk yang tidak menawarkan apa pun selain java.sql.Connection.
  2. Jika Anda menggunakan kelas Anda, Anda tidak akan pernah bisa memanfaatkan penggabungan koneksi.
  3. Anda memasang kabel kelas driver, URL koneksi, dll. Anda tidak dapat mengubahnya tanpa mengedit dan mengkompilasi ulang. Solusi yang lebih baik adalah dengan mengeksternalisasi hal-hal seperti itu.
  4. Mencetak pesan kesalahan di blok tangkapan jauh lebih sedikit informasinya daripada memasok seluruh jejak tumpukan.
  5. Kode Anda menyakiti mata saya. Itu tidak mengikuti standar pengkodean Sun Java.
  6. retrieveData Anda metode sama sekali tidak berharga. Apa yang akan Anda lakukan dengan semua pernyataan tercetak itu? Bukankah lebih baik memuatnya ke dalam struktur data atau objek sehingga sisa kode Anda dapat menggunakan informasi itu?
  7. Ini rowsAffected - "mempengaruhi" adalah kata kerja, "efek" adalah kata benda. Variabel lain yang tidak baik.

Anda berada di jalur yang salah. Pikirkan kembali.

Saya rasa kode ini akan lebih membantu Anda.

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. default kolom dengan string kosong

  2. Perintah Laravel berdasarkan hubungan hasmany

  3. Peningkatan Laravel 5.4, mengonversi ke utf4mb dari utf8

  4. Sintaks MySQL dalam membuat Kunci Asing

  5. password_hash, password_verify, MySQL salah paham?