Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Người mới sử dụng Java cần trợ giúp trong việc kết nối cơ sở dữ liệu

Tôi muốn nói rằng mã của bạn là một ví dụ về nhiều phương pháp tồi tệ nhất. Hãy để tôi đếm các cách:

  1. Lớp Kết nối của bạn là một lớp trừu tượng kém, không cung cấp gì hơn và cao hơn lớp của java.sql.Connection.
  2. Nếu bạn sử dụng lớp học của mình, bạn sẽ không bao giờ tận dụng được lợi thế của việc tổng hợp kết nối.
  3. Bạn cố định lớp trình điều khiển, URL kết nối của mình, v.v. Bạn không thể thay đổi nó nếu không chỉnh sửa và biên dịch lại. Giải pháp tốt hơn sẽ là ngoại hóa những thứ như vậy.
  4. Việc in thông báo lỗi trong các khối bắt ít thông tin hơn nhiều so với việc cung cấp toàn bộ dấu vết ngăn xếp.
  5. Mã của bạn làm tôi đau mắt. Nó không tuân theo các tiêu chuẩn mã hóa Sun Java.
  6. retrieveData của bạn phương pháp hoàn toàn vô giá trị. Bạn sẽ làm gì với tất cả những báo cáo đã in đó? Sẽ tốt hơn nếu bạn tải chúng vào cấu trúc dữ liệu hoặc đối tượng để phần còn lại của mã của bạn có thể sử dụng thông tin đó?
  7. Đó là rowsAffected - "effect" là động từ, "effect" là danh từ. Một biến số khác không hoạt động tốt.

Bạn đang đi sai hướng. Hãy suy nghĩ lại nó.

Tôi nghĩ bạn sẽ thấy mã này hữu ích hơn.

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. DATATYPE nào tốt hơn để sử dụng TEXT hoặc VARCHAR?

  2. Nhóm Laravel theo ngày

  3. SQL Performance UNION so với OR

  4. Dữ liệu tải MySQL:Lệnh này chưa được hỗ trợ trong giao thức câu lệnh đã chuẩn bị

  5. Làm cách nào để kết nối với MySQL DB đang chạy dưới dạng vùng chứa trong docker?