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

Cách tạo động một câu lệnh chuẩn bị sẵn - và sử dụng lại truy vấn

Giả sử bạn đã có thể tạo chuỗi SQL động (chèn ? ở đúng vị trí cần thiết), tôi khuyên bạn nên sử dụng Map để chuyển các tham số có khóa key sẽ là thứ tự tham số (1,2,3, v.v.). Một cái gì đó như thế này:

public class Database{
    private String _sqlString;
    private Map<Integer,Object> _parameters;

    public Database(String sql){
        _sqlstring = sql;
    }

    public void setParameters(Map<Integer,Object> param){
        _parameters = param;
    }

    /* 
     * I'm assuming you already have a method like this
     */
    public List processQuery(){
        List results = new ArrayList();
        /* 
         * establish connection here
         */
        PreparedStatement preparedStatement = connection.prepareStatement(this._sqlString);

        if(_parameters != null){
            /* 
             * Iterate over the map to set parameters 
             */
            for(Integer key : _parameters.keySet()){
                preparedStatement.setObject(key, _parameters.get(key));
            }
        }            

        ResultSet rs = preparedStatement.executeQuery();
        /*
         * process the ResultSet
         */
        return results;
    }

}

Cuối cùng, bạn có thể sử dụng Database như sau:

String sql = "SELECT FULLNAMES FROM CUSTOMER WHERE ADDRESS = ? OR ADDRESS = ?";

Map<Integer,Object> param = new HashMap<>();
param.put(1,"NEW YORK");
param.put(2,"CHICAGO");

Database db = new Database(sql);
db.setParameters(param);
List customers = db.processQuery();



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Ý nghĩa chính xác của Mệnh đề khóa ngoại 'về giới hạn xóa' của MySQL

  2. Làm thế nào để hợp nhất hai cơ sở dữ liệu, với cùng một dữ liệu, nhưng có các PK khác nhau, mà không có các trường trùng lặp?

  3. Kiểm tra x ngày liên tiếp - dấu thời gian đã cho trong cơ sở dữ liệu

  4. Tại sao TRẠNG THÁI BẢNG HIỂN THỊ của innodb lại không đáng tin cậy như vậy?

  5. truy vấn mysql để chuyển đổi động dữ liệu hàng thành cột