Pada dasarnya:Anda dapat terhubung ke server MySQL (atau apa pun yang Anda gunakan), tetapi Anda tidak boleh lakukan ini langsung dari aplikasi Android Anda.
Alasan:
-
Aplikasi Android dapat didekompilasi, dan klien akan memiliki kredensial untuk mengakses database Anda. Jika menggunakan alat peretasan yang tepat seperti Backtrack , maka klien jahat ini dapat mengakses, menghubungkan, dan mengeksploitasi data di database Anda.
-
Jika aplikasi Anda untuk klien di seluruh dunia, maka klien harus membuka dan memelihara koneksi ke database Anda per operasi atau serangkaian operasi. Membuka koneksi database fisik membutuhkan banyak waktu, bahkan ketika klien pc Anda berada di LAN di sebelah server mesin database. Sekarang, bayangkan membuka koneksi dari negara di belahan dunia lain, mis. Cina atau Jepang atau dari negara di Amerika Selatan seperti Brasil atau Peru (tempat saya tinggal).
Untuk 2 alasan ini yang dapat saya kemukakan, merupakan ide yang buruk bahkan mencoba menyambung ke MySQL atau mesin basis data lainnya langsung dari perangkat ponsel Anda.
Bagaimana cara mengatasi masalah ini? Gunakan arsitektur berorientasi layanan di mana Anda akan memiliki setidaknya dua aplikasi:
-
Aplikasi penyedia layanan. Aplikasi ini akan membuat dan menerbitkan layanan web (sebaiknya RESTful) dan dapat menetapkan kebijakan untuk menggunakan layanan web seperti otentikasi dan otorisasi pengguna. Aplikasi ini juga akan terhubung ke database dan menjalankan operasi CRUD terhadapnya.
-
Aplikasi konsumen layanan. Ini akan menjadi aplikasi Android Anda (atau ponsel lainnya).
Dari pertanyaan Anda, Anda fokus pada poin 1. Seperti yang saya katakan di komentar saya, Anda dapat membuat aplikasi Web di Java, membuat layanan RESTful di sana, yang bermuara pada POJO (objek Java lama biasa) yang memiliki metode per layanan. Dalam metode ini, karena ini adalah Java biasa, Anda dapat menambahkan fungsionalitas lain seperti penggunaan JDBC.
Berikut adalah contoh awal menggunakan Jersey, Jackson (perpustakaan JSON) dan JDBC:
@Path("/product")
public class ProductRestService {
@GET
@Path("/list")
@Produces(MediaType.APPLICATION_JSON)
public List<Product> getProducts() {
List<Product> productList = new ArrayList<>();
Connection con = ...; //retrieve your database connection
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT id, name FROM product");
while (rs.next()) {
Product product = new Product();
product.setId(rs.getInt("id"));
product.setName(rs.getString("name"));
productList.add(product);
}
//ALWAYS close the resources
rs.close();
stmt.close();
conn.close();
return productList;
}
}
Anda dapat memeriksa konfigurasi lebih lanjut dari aplikasi web Java dalam tutorial seperti mkyong's atau Vogella's atau lainnya yang Anda suka (terlalu banyak info untuk ditempatkan di jawaban ini).
Perhatikan bahwa kemudian aplikasi ini dapat berkembang menjadi aplikasi berlapis, dan kode JDBC akan masuk ke kelas DAO, dan kemudian ProductRestService
class akan mengakses database melalui class DAO ini. Berikut contoh kickoff lainnya:
public class ProductDao {
public List<Product> getProducts() {
List<Product> productList = new ArrayList<>();
Connection con = ...; //retrieve your database connection
//the rest of the code explained above...
return productList;
}
}
@Path("/product")
public class ProductRestService {
@GET
@Path("/list")
@Produces(MediaType.APPLICATION_JSON)
public List<Product> getProducts() {
ProductDao productDao = new ProductDao();
return productDao.getProducts();
}
}
Dan Anda dapat menerapkan perubahan lain pada proyek ini serta yang sedang berkembang.
Bisakah Anda memberi tahu saya apa yang dilakukan PHP di sini? (jika saya mengembangkan dengan PHP)
Alih-alih menulis aplikasi penyedia Layanan di Java (seperti yang ditunjukkan di atas), Anda dapat melakukannya di PHP. Atau dengan Python, Ruby, C#, Scala atau bahasa pemrograman lain yang menyediakan teknologi ini untuk Anda. Sekali lagi, saya tidak yakin jenis tutorial apa yang Anda baca, tetapi ini harus dijelaskan di suatu tempat dan menjelaskan bahwa untuk tujuan tutorial itu Anda akan membuat layanan menggunakan PHP. Jika Anda merasa lebih nyaman menulis layanan ini di Java daripada di PHP atau bahasa lainnya, tidak masalah. Aplikasi Android Anda tidak terlalu peduli teknologi mana yang digunakan untuk menghasilkan layanan web, aplikasi hanya akan peduli tentang penggunaan layanan dan data darinya dapat dikonsumsi.