दिलचस्प पोस्ट
एंड्रॉइड स्टूडियो अपडेट नहीं किया जा सकता – केवल डाउनलोड करें मैं कैसे आज्ञाओं को दिखाने के लिए मजबूर कर सकता हूं / जीसीसी? va_list का उपयोग करके printf को कॉल करें पीएचपी टर्नेरी ऑपरेटर बनाम स्विच स्टेटमेंट बनाम आईएफएफएफ़ … जो मुझे इस्तेमाल करना चाहिए? Django बाकी ढांचे, एक ही ModelViewSet में अलग serializers का उपयोग करें मैं एक सूची से एक तत्व कैसे निकाल सकता हूं? सी # का उपयोग करते हुए विंडोज फॉर्म में पीडीएफ देखना नए हैशिंग एल्गोरिथ्म के लिए पुराने पासवर्ड चलाना? JQuery के साथ iframe पर क्लिक ईवेंट को कैसे जोड़ें कम ज्ञात लेकिन उपयोगी डेटा संरचनाएं क्या हैं? सबवर्सन के साथ आंशिक प्रतिबद्धता मैं JavaScript में एक सरणी में "तर्क" ऑब्जेक्ट को कैसे परिवर्तित कर सकता / सकती हूं? एक डेटा.फ्रेम में कॉलम जोड़ना क्या अलग-अलग कुंजी के लिए हैश-मैप धागा-सुरक्षित है? थकदार कनेक्शन पूल से बचने के लिए JDBC MySql कनेक्शन पूलिंग प्रथाओं

एंड्रॉइड जेडीबीसी काम नहीं कर रहा है: चालक पर क्लासनोटफ़ाउंड अपवाद

मैं अपने एंड्रॉइड एप्लीकेशन में जेडीबीसी का उपयोग करने के लिए एक दूरस्थ डेटाबेस से सम्मिलित करने, प्रश्नों आदि आदि का उपयोग करने की कोशिश कर रहा हूं। मैं इन चीजों को एक अलग जावा परियोजना में सफलतापूर्वक कनेक्ट और किया है। इसलिए मुझे लगता है कि एंड्रॉइड जावा है, मैं प्रासंगिक कोड पर बस बंदरगाह कर सकता हूं, चालक आदि के लिए उसी बिल्ड पथ को जोड़ सकता हूं। लेकिन यह मुझे त्रुटि देता है:

java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 

मैं सच में नहीं सोचता कि यह एक कोड मुद्दा है क्योंकि एक ही कोड जावा प्रोजेक्ट में काम करता है (जो मैं सिर्फ मुख्य () में निष्पादित करता हूं)। लेकिन यहां संदर्भ के लिए यह है:

 String url = "jdbc:mysql://localhost:3306/eventhub_test"; // String user = "root"; String pass = ""; SQLUtils sqlu = new SQLUtils(url, user, pass); 

// मैं बनाया SQLUtils वर्ग:

 public class SQLUtils { private String CONNECTION_URL; private String user; private String pass; private java.sql.Statement stmt; private java.sql.Connection conn; public SQLUtils(String conn_url, String user, String pass) { this.CONNECTION_URL = conn_url; this.user = user; this.pass = pass; } public void init() throws IllegalAccessException, InstantiationException, ClassNotFoundException, SQLException { Class.forName ("com.mysql.jdbc.Driver").newInstance (); conn = DriverManager.getConnection(CONNECTION_URL, user, pass); stmt = conn.createStatement(); } } 

तो मैं वास्तव में यहाँ उलझन में हूँ क्या जेडीबीसी एंड्रॉइड के साथ काम नहीं करता है? यदि हां, तो मुझे बताएं कि मुझे दूरस्थ MySQL डाटाबेस एक्सेस के लिए कौन से विकल्प देखना चाहिए।

धन्यवाद।

वेब के समाधान से एकत्रित समाधान "एंड्रॉइड जेडीबीसी काम नहीं कर रहा है: चालक पर क्लासनोटफ़ाउंड अपवाद"

क्या जेडीबीसी एंड्रॉइड के साथ काम नहीं करता है?

जेडीबीसी को एंड्रॉइड पर कभी-कभी उपयोग नहीं किया जाता है, और मैं निश्चित रूप से इसकी सिफारिश नहीं करेगा

आईएमएचओ, जेडीबीसी उच्च बैंडविड्थ, कम विलंबता, उच्च-विश्वसनीय नेटवर्क कनेक्शन (उदाहरण के लिए, डेस्कटॉप से ​​डेटाबेस सर्वर, डेटाबेस सर्वर पर वेब अनुप्रयोग सर्वर) के लिए डिज़ाइन किया गया है। मोबाइल डिवाइस इनमें से बहुत कम ऑफर करते हैं, और इनमें से कोई भी लगातार नहीं है

यदि हां, तो मुझे बताएं कि मुझे दूरस्थ MySQL डाटाबेस एक्सेस के लिए कौन से विकल्प देखना चाहिए।

अपने डेटाबेस के आसपास एक वेब सेवा बनाएं और एंड्रॉइड से एक्सेस करें

पक्ष लाभ के रूप में, आप सुरक्षा को बेहतर बनाते हैं (बनाम अपना डाटाबेस खोलना), ग्राहक से कुछ व्यावसायिक तर्क को ऑफलोड कर सकते हैं, अन्य प्लेटफार्मों (जैसे, वेब या वेब-आधारित मोबाइल फ़्रेमवर्क) आदि का बेहतर समर्थन कर सकते हैं।

मेरे पास इस कारण किसी कारण के लिए परेशानी का खतरा था। इसका उल्लेख कहीं और है कि केवल 3.017 चालक काम करता है, और जब से मैंने इस तरह के विस्तृत निर्देश दिए हैं तो मुझे लगा कि मैं उन्हें साझा करता हूं। (मेरा प्रारंभिक उद्देश्य इस त्रुटि को पुन: उत्पन्न करने के लिए कदम उठाना था कि मैं यहाँ और कहीं और एक सवाल पूछने के लिए इस्तेमाल कर सकता था। नहीं, मुझे यह अनुमान लगाना शुरू नहीं हो सकता है कि मुझे अब क्यों वापस देख रहे हैं?


To: एंड्रॉइड ऐप में जेडीबीसी ड्रायवर प्राप्त करें

  • नया एंड्रॉइड प्रोजेक्ट – एंड्रॉइड जेडीबीसीटेस्ट, लक्ष्य एंड्रॉइड 4.03, न्यूनतम एसडीके 8 (एंड्रॉइड 2.2), पैकेज का नाम "कॉम। टेस्ट। एंड्रॉइड जेडीबीसीटेस्ट"
  • प्रोजेक्ट पर राइट क्लिक करें, नया फ़ोल्डर "लिब्स"
  • यहां से MySQL JDBC ड्रायवर डाउनलोड करें और इसे अपने फाइल सिस्टम पर निकालें।
  • jar mysql-connector-java-3.0.17-ga-bin.jar अंदर परियोजना एक्सप्लोरर में अपनी परियोजना में jar mysql-connector-java-3.0.17-ga-bin.jar को निकालने और खींचने और खींचने के बाद मूल निर्देशिका में ब्राउज़ करें। डिफ़ॉल्ट "कॉपी" सेटिंग का उपयोग करके खींचें और छोड़ें।
  • ईक्लिप्स प्रोजेक्ट पर राइट क्लिक करें, पथ-कॉन्फ़िगर बिल्ड पथ बनाएं, लाइब्रेरी टैब के तहत जार जोड़ें – ब्राउज़ करें / एंड्रॉइडजैडबैक्टेस्ट / लिब्स और जार फ़ाइल पर क्लिक करें और ठीक क्लिक करें
  • नोट: यह अब "संदर्भित पुस्तकालयों" नोड (यदि ग्रहण इसे दिखाने के लिए सेट किया गया है) के अंतर्गत दिखाया गया है
  • कोड को यहां से जोड़ें Class.forName("com.mysql.jdbc.Driver").newInstance(); onCreate() के अंत तक – मूल रूप से Class.forName("com.mysql.jdbc.Driver").newInstance();
  • मोटोरोला एक्सूम परिवार संस्करण और रन जैसे हनीकॉब डिवाइस संलग्न करें

मान्य आपत्तियों को छोड़कर, आप इसे काम कर सकते हैं।

सबसे पहले सुनिश्चित करें कि आपके पास पथ बनाने में एक वैध चालक जार है, मैंने इस्तेमाल किया

 mysql-connector-java-5.1.7-bin.jar 

दूसरे, यदि आप इसे एमुलेटर में कोशिश कर रहे हैं और आपका डीबी विकास मशीन पर है, तो 'स्थानीय होस्ट' यूआरएल में अच्छा नहीं है। आपको '10.0.2.2 'की आवश्यकता है

मेरा यूआरएल है:

 String url = "jdbc:mysql://10.0.2.2/test"; 

परीक्षण मेरे डीबी नाम होने के नाते

मेरे पास 'किताबें' नामक एक टेबल है जिसमें एक कॉलम 'शीर्षक' है

निम्नलिखित कोड मेरे लिए काम करता है:

 public void init() throws IllegalAccessException, InstantiationException, ClassNotFoundException, SQLException { Class.forName("com.mysql.jdbc.Driver").newInstance(); try { conn = DriverManager.getConnection(CONNECTION_URL, user, pass); } catch (java.sql.SQLException e1) { e1.printStackTrace(); } try { stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery("SELECT title FROM books"); String entry; while (rs.next()){ entry = rs.getString(1); } rs.close(); stmt.close(); conn.close(); } catch (java.sql.SQLException e) { e.printStackTrace(); } } 

डीबगर के माध्यम से आगे बढ़कर, मैं स्ट्रिंग एंट्री में शीर्षक देखता हूं

सिद्धांत रूप में आप ऐसा करने में सक्षम होना चाहिए। आपको अपना कोड काम करने के लिए अपने प्रोजेक्ट में MySQL JDBC ड्राइवर जार शामिल करना होगा ( यहां समाधान के साथ एक समान पोस्ट है)।

लेकिन यह शायद एक अच्छा विचार नहीं है यह बेहतर है अगर आप अपने सर्वर पर एक समर्पित (आरईएसटी) एपीआई के जरिए डाटाबेस की सामग्रियों को उजागर करते हैं।

वे वास्तव में लिंक में कारण नहीं देते हैं, लेकिन मुख्य कारणों में से एक यह है कि सुरक्षा संबंधी चिंताओं की वजह से सीधे अपने डेटाबेस को बेनकाब करने का एक बुरा विचार है आपके अधिकांश उपयोगकर्ता अच्छा व्यवहार करेंगे और केवल अपने फोन के साथ क्या करेंगे, लेकिन कल्पना न करें।

यदि आपके पास अपने डेटाबेस के लिए एक वैध लॉगिन है, तो वह बस आपके डेटाबेस से कनेक्ट हो सकता है, सभी प्रकार के SELECTs कर सकता है या फिर डेटा को बदल / नष्ट कर सकता है यदि अनुमति के लिए उसे अनुमति दी जाती है

इसलिए आपके पास एक वेब सर्वर होना चाहिए जो कि मान्य है और प्रयोक्ता से आने वाले किसी भी अनुरोध को सैनिटरीकृत करता है ताकि यह सुनिश्चित हो सके कि आपके डेटा को केवल आपके MySQL डाटाबेस से पुनर्प्राप्त किया जा सके।

सुनिश्चित करें कि आपने प्रोजेक्ट के लायब्रेरी फोल्डर के अंदर कनेक्टर को रखा है। इसे वहां रखें, यह समस्या को हल करेगा

inthe gradle फ़ाइल को बदलने का प्रयास करें

  targetSdkVersion 8