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

cara terbaik untuk memanggil dua server database

Misalkan user_id adalah long .

PreparedStatement psUserLocation = conB.prepareStatement("SELECT location FROM B.users WHERE user_id = ?");
while(rs.next()) {
    //call select statement for database B to get the location for each user id
    long userId = rs.getLong(user_id);
    psUserLocation.setLong(1, userId)
    ResultSet userLocation = ps.executeQuery();
    // Do whatever with the location(s)
}

EDIT :satu kueri untuk semua pengguna, bukan satu kueri per pengguna:

private final static String QUERY = "SELECT user_id, location FROM B.users WHERE user_id IN (%a)";

StringBuilder userList = new StringBuilder();
while(rs.next()) {
    long userId = rs.getLong(user_id);
    userList.append(userId);
    if (!rs.isLast()) {
        userList.append(",");
    }
}

String usersLocationQuery = QUERY.replaceAll("%a", userList.toString());
PreparedStatement psUsersLocation = conB.prepareStatement(usersLocationQuery);
ResultSet usersLocation = psUsersLocation.executeQuery();
// Do whatever with the locations

Perlu diingat ini bisa gagal/berfungsi salah karena sebagian besar DB memiliki batas untuk berapa banyak item SQL IN klausa dapat mencakup. Juga metode kedua ini memungkinkan injeksi SQL pada %a pengganti.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Terhubung ke MySQL di MAMP

  2. Apa yang salah dengan kode SQL ini? (VBA MS Akses)

  3. Cara membuat database di MySQL

  4. Pustaka python 3 apa yang harus saya gunakan untuk MySQL?

  5. Akses ditolak kesalahan dari Java ke MySQL