मूल रूप से:आप अपने MySQL (या आप जो भी उपयोग करते हैं) सर्वर से कनेक्ट कर सकते हैं, लेकिन आपको ऐसा नहीं करना चाहिए इसे सीधे अपने Android एप्लिकेशन से करें।
कारण:
-
एंड्रॉइड एप्लिकेशन को डिकंपाइल किया जा सकता है, और क्लाइंट के पास आपके डेटाबेस तक पहुंचने के लिए क्रेडेंशियल होंगे। यदि Backtrack जैसे सही हैकिंग टूल का उपयोग कर रहे हैं , तो यह दुर्भावनापूर्ण क्लाइंट आपके डेटाबेस में डेटा तक पहुंच, कनेक्ट और शोषण कर सकता है।
-
यदि आपका आवेदन दुनिया भर के ग्राहकों के लिए है, तो ग्राहकों को प्रति ऑपरेशन या संचालन के सेट पर आपके डेटाबेस से कनेक्शन खोलना और बनाए रखना चाहिए। भौतिक डेटाबेस कनेक्शन को खोलने में बहुत समय लगता है, तब भी जब आपका पीसी क्लाइंट डेटाबेस इंजन सर्वर के बगल में LAN में हो। अब, दुनिया के दूसरी तरफ किसी देश से कनेक्शन खोलने की कल्पना करें उदा। चीन या जापान या दक्षिण अमेरिका के किसी देश जैसे ब्राजील या पेरू (जहां मैं रहता हूं) से।
इन 2 कारणों से मैं आ सकता हूं, यह एक बुरा विचार है, यहां तक कि सीधे अपने फोन डिवाइस से MySQL या किसी अन्य डेटाबेस इंजन से कनेक्ट करने का प्रयास करना भी एक बुरा विचार है।
इस समस्या को हल कैसे करें? सेवा उन्मुख आर्किटेक्चर का उपयोग करें जहां आपके पास कम से कम दो एप्लिकेशन होंगे:
-
सेवा प्रदाता आवेदन। यह एप्लिकेशन वेब सेवाओं (अधिमानतः रीस्टफुल) को बनाएगा और प्रकाशित करेगा और उपयोगकर्ता प्रमाणीकरण और प्राधिकरण जैसी वेब सेवाओं का उपभोग करने के लिए नीतियां स्थापित कर सकता है। यह एप्लिकेशन डेटाबेस से भी जुड़ जाएगा और इसके खिलाफ सीआरयूडी संचालन निष्पादित करेगा।
-
सेवा उपभोक्ता आवेदन। यह आपका Android (या कोई अन्य मोबाइल) एप्लिकेशन होगा।
अपने प्रश्न से, आप बिंदु 1 पर ध्यान केंद्रित कर रहे हैं। जैसा कि मैंने अपनी टिप्पणियों में कहा है, आप जावा में एक वेब एप्लिकेशन बना सकते हैं, वहां एक रीस्टफुल सेवा बना सकते हैं, जो एक पीओजेओ (सादा पुरानी जावा ऑब्जेक्ट) तक उबाल जाती है। प्रति सेवा एक विधि है। इस पद्धति में, चूंकि यह सामान्य जावा है, आप JDBC उपयोग जैसी अन्य कार्यक्षमता जोड़ सकते हैं।
यहां जर्सी, जैक्सन (JSON लाइब्रेरी) और 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;
}
}
आप mkyong's जैसे ट्यूटोरियल में जावा वेब एप्लिकेशन के और कॉन्फ़िगरेशन की जांच कर सकते हैं। ए> या Vogella's या आपकी कोई अन्य पसंद (इस उत्तर में डालने के लिए यह बहुत अधिक जानकारी है)।
ध्यान दें कि तब यह एप्लिकेशन एक स्तरित एप्लिकेशन में विकसित हो सकता है, और JDBC कोड DAO क्लास में जाएगा, और फिर ProductRestService
इस डीएओ वर्ग के माध्यम से वर्ग डेटाबेस तक पहुंच जाएगा। यहां एक और किकऑफ़ उदाहरण दिया गया है:
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();
}
}
और आप इस परियोजना के साथ-साथ विकसित होने वाले अन्य परिवर्तनों को भी लागू कर सकते हैं।
<ब्लॉकक्वॉट>क्या आप मुझे बता सकते हैं कि PHP यहाँ क्या करता है? (यदि मैं PHP के साथ विकसित होता हूं)
जावा में सेवा प्रदाता एप्लिकेशन लिखने के बजाय (जैसा कि ऊपर दिखाया गया है), आप इसे PHP में कर सकते हैं। या Python, Ruby, C#, Scala या किसी अन्य प्रोग्रामिंग भाषा में जो आपको यह तकनीक प्रदान करती है। दोबारा, मुझे यकीन नहीं है कि आप किस प्रकार का ट्यूटोरियल पढ़ रहे हैं, लेकिन इसे कहीं और समझाया जाना चाहिए और समझाएं कि उस ट्यूटोरियल के प्रयोजनों के लिए आप PHP का उपयोग करके सेवाएं तैयार करेंगे। यदि आप PHP या किसी अन्य भाषा के बजाय जावा में इन सेवाओं को लिखने में अधिक सहज महसूस करते हैं, तो कोई समस्या नहीं है। आपका एंड्रॉइड ऐप वास्तव में परवाह नहीं करता है कि वेब सेवाओं का उत्पादन करने के लिए किस तकनीक का उपयोग किया जाता है, यह केवल सेवाओं का उपभोग करने की परवाह करेगा और उनसे डेटा का उपभोग किया जा सकता है।