Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

mySQL को Android से कनेक्ट करें

यहाँ उदाहरण है

संपादित करें: पहले एक डेटाबेस बनाएँ नाम मान लीजिए dbname MySql में वैंप या अपने सर्वर में और emp_info . नाम की एक टेबल बनाएं जिसमें दो फ़ील्ड जोड़े जाते हैं id और नाम

यहाँ परिदृश्य, EDITTEXT से MYSQL सर्वर डेटाबेस में कर्मचारी की ID और NAME सम्मिलित करना है

वैश्विक चर हैं

  स्ट्रिंग नाम; स्ट्रिंग आईडी; इनपुटस्ट्रीम =शून्य है; स्ट्रिंग परिणाम =शून्य; स्ट्रिंग लाइन =शून्य; इंट कोड; 

गतिविधि कोड के लिए

आयात करें HttpResponse;import org.apache.http.NameValuePair;import org.apache.http.client.HttpClient;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http.client.methods.HttpPost;import org .apache.http.impl.client.DefaultHttpClient;import org.apache.http.message.BasicNameValuePair;import org.json.JSONObject;import android.app.Activity;import android.os.Bundle;import android.os.StrictMode; आयात android.util.Log;आयात android.view.View;import android.widget.Button;import android.widget.EditText;import android.widget.Toast;पब्लिक क्लास ऐड एक्सटेंड एक्टिविटी {स्ट्रिंग नेम; स्ट्रिंग आईडी; इनपुटस्ट्रीम =शून्य है; स्ट्रिंग परिणाम =शून्य; स्ट्रिंग लाइन =शून्य; इंट कोड; स्ट्रिंग टोबेड =अशक्त; @Override सार्वजनिक शून्य पर क्रिएट (बंडल सेव किया गया इंस्टेंसस्टेट) {super.onCreate (savedInstanceState); setContentView(R.layout.add); StrictMode.ThreadPolicy नीति =नई StrictMode.ThreadPolicy.Builder ()। PermitAll ()। बिल्ड (); StrictMode.setThreadPolicy (नीति); अंतिम एडिटटेक्स्ट e_id=(EditText) findViewById(R.id.editText1); अंतिम एडिटटेक्स्ट e_name =(एडिट टेक्स्ट) findViewById (R.id.editText2); बटन डालने =(बटन) findViewById (R.id.button1); इंसर्ट.सेटऑनक्लिक लिस्टनर (नया व्यू। ऑनक्लिक लिस्टनर () {@ ओवरराइड पब्लिक वॉयड ऑनक्लिक (व्यू वी) {// TODO ऑटो-जेनरेटेड मेथड स्टब आईडी =e_id.getText ()। toString (); नाम =e_name.getText ()। toString (); डालना(); } }); }}

डेटा डालने का तरीका

सार्वजनिक शून्य सम्मिलित करें() { ArrayList nameValuePairs =new ArrayList(); // उस वेरिएबल nameValuePairs.add (नया BasicNameValuePair ("id", id)) में id और नाम के मान डालें; nameValuePairs.add (नया BasicNameValuePair ("नाम", नाम)); कोशिश करें { HttpClient httpclient =नया DefaultHttpClient (); // यहां स्थानीय उपयोग के लिए PHP फ़ाइल है // उदाहरण के लिए यदि आप वैंप का उपयोग कर रहे हैं तो फ़ाइल को www/प्रोजेक्ट फ़ोल्डर में डालें HttpPost httppost =new HttpPost ("http://10.0.2.2/project/insert2.php"); // अगर फ़ाइल सर्वर पर है HttpPost httppost =new HttpPost ("http://example.com/insert2.php"); httppost.setEntity (नया UrlEncodedFormEntity (nameValuePairs)); HttpResponse प्रतिक्रिया =httpclient.execute (httppost); HttpEntity इकाई =response.getEntity (); is =entity.getContent (); Log.e ("पास 1", "कनेक्शन सफलता"); } पकड़ (अपवाद ई) { Log.e ("असफल 1", e.toString ()); Toast.makeText (getApplicationContext (), "अमान्य आईपी पता", टोस्ट। LENGTH_LONG)। शो (); } कोशिश करें { BufferedReader रीडर =नया BufferedReader (नया InputStreamReader (is, "iso-8859-1"), 8); स्ट्रिंगबिल्डर एसबी =नया स्ट्रिंगबिल्डर (); जबकि ((लाइन =रीडर। रीडलाइन ())! =शून्य) {एसबी.एपेंड (लाइन + "\ n"); } बंद है(); परिणाम =sb.toString (); Log.e ("पास 2", "कनेक्शन सफलता"); } पकड़ (अपवाद ई) { Log.e ("विफल 2", e.toString ()); } कोशिश करें {// PHP फ़ाइल से परिणाम प्राप्त करें JSONObject json_data =नया JSONObject (परिणाम); कोड =(json_data.getInt ("कोड")); अगर (कोड ==1) { Toast.makeText (getBaseContext (), "सफलतापूर्वक डाला गया", Toast.LENGTH_SHORT)। शो (); } और { Toast.makeText (getBaseContext (), "क्षमा करें, पुन:प्रयास करें", Toast.LENGTH_LONG)। शो (); } } पकड़ (अपवाद ई) { Log.e ("विफल 3", e.toString ()); Log.i("tagconvertstr", "["+result+"]"); } } 

यहाँ है insert2.php फ़ाइल

 

दूसरा संपादन:-

डेटा पढ़ने के लिए मैंने एसिन्टस्क किया है

यहां डेटा एक सूचीदृश्य में प्रदर्शित होता है।

पब्लिक क्लास रीड ऐक्टिविटी बढ़ाता है {निजी स्ट्रिंग jsonResult;//// अगर आपकी फ़ाइल सर्वर पर है तो इसका उपयोग करें निजी स्ट्रिंग url ="http://exmaple.com/read.php"; // इसका उपयोग करें यदि आप स्थानीय रूप से // निजी स्ट्रिंग url ="http://10.0.2.2/project/read.php" का उपयोग कर रहे हैं; निजी सूची दृश्य सूची दृश्य; प्रसंग संदर्भ; स्ट्रिंग नाम; स्ट्रिंग आईडी; इनपुटस्ट्रीम =शून्य है; स्ट्रिंग परिणाम =शून्य; स्ट्रिंग लाइन =शून्य; इंट कोड; @Override संरक्षित शून्य पर क्रिएट (बंडल सेव किया गया इंस्टेंसस्टेट) {super.onCreate (savedInstanceState); setContentView(R.layout.read); StrictMode.ThreadPolicy नीति =नई StrictMode.ThreadPolicy.Builder ()। PermitAll ()। बिल्ड (); StrictMode.setThreadPolicy (नीति); प्रसंग =यह; सूची दृश्य =(सूची दृश्य) findViewById (R.id.listView1); एक्सेसवेब सेवा (); } 

एक्सेसवेबसर्विस विधि

  सार्वजनिक शून्य पहुंच वेब सेवा () {JsonReadTask कार्य =नया JsonReadTask (); task.execute (नया स्ट्रिंग [] {url}); } 

JsonReadTask वर्ग के लिए

निजी वर्ग JsonReadTask AsyncTask का विस्तार करता है<स्ट्रिंग, शून्य, स्ट्रिंग> {// doInBackground विधि UI के साथ इंटरैक्ट नहीं करेगी @Override संरक्षित स्ट्रिंग doInBackground(String... params) {// नीचे दिए गए कोड में किया जाएगा पृष्ठभूमि एचटीपी क्लाइंट httpclient =नया डिफॉल्ट एचटीपी क्लाइंट (); एचटीपीपोस्ट httppost =नया एचटीपीपोस्ट (पैराम्स [0]); कोशिश करें { HttpResponse प्रतिक्रिया =httpclient.execute (httppost); jsonResult =inputStreamToString (प्रतिक्रिया। getEntity ()। getContent ())। toString (); } कैच (क्लाइंटप्रोटोकॉल एक्सेप्शन ई) { ई.प्रिंटस्टैकट्रेस (); Log.e ("12 विफल", e.toString ()); } कैच (IOException e) { Log.e("Fail 22", e.toString ()); ई.प्रिंटस्टैकट्रेस (); } वापसी शून्य; } निजी स्ट्रिंगबिल्डर इनपुटस्ट्रीमटॉस्ट्रिंग (इनपुटस्ट्रीम है) {स्ट्रिंग आरलाइन =""; स्ट्रिंगबिल्डर उत्तर =नया स्ट्रिंगबिल्डर (); BufferedReader rd =नया BufferedReader (नया इनपुटस्ट्रीम रीडर (है)); कोशिश करें { जबकि ((rLine =rd.readLine ())! =अशक्त) { answer.append (rLine); } } कैच (IOException e) {// e.printStackTrace (); Toast.makeText (getApplicationContext (), "त्रुटि ..." + e.toString (), टोस्ट। LENGTH_LONG)। शो (); } वापसी उत्तर; } // doInBackground विधि के पूरा होने के बाद onPostExecute विधि को @Override संरक्षित शून्य onPostExecute (स्ट्रिंग परिणाम) कहा जाएगा {// यहां आप UI ListDrwaer () के साथ बातचीत कर सकते हैं; } }// async कार्य समाप्त करें 

सूची दराज विधि

  // सूची दृश्य सार्वजनिक शून्य के लिए हैश सेट बनाएं ListDrwaer () {सूची <मानचित्र <स्ट्रिंग, स्ट्रिंग>> कर्मचारी सूची =नया ऐरेलिस्ट <मानचित्र <स्ट्रिंग, स्ट्रिंग>> (); कोशिश करें {// सर्वर से डेटा प्राप्त करना JSONObject jsonResponse =नया JSONObject (jsonResult); अगर (jsonResponse! =शून्य) {JSONArray jsonMainNode =jsonResponse.optJSONArray ("emp_info"); // तालिका में डेटा की कुल संख्या प्राप्त करें (int i =0; i  कर्मचारी बनाएं (स्ट्रिंग नाम, स्ट्रिंग संख्या) {हैश मैप <स्ट्रिंग, स्ट्रिंग> कर्मचारीनाम =नया हैश मैप <स्ट्रिंग, स्ट्रिंग> (); कर्मचारी नाम संख्या।पुट (नाम, संख्या); कर्मचारी का नाम वापस करें; } } 

और आपका read.php फ़ाइल कोड

  

और यदि आप इस प्रविष्टि का उपयोग करने और पढ़ने से पहले अपने इंटरनेट कनेक्शन की जांच करना चाहते हैं तो इस विधि का उपयोग करें .. यानी इस विधि को अन्य कथन में रखें

 पब्लिक बूलियन isOnline() { ConnectivityManager cm =(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo netInfo =cm.getActiveNetworkInfo (); अगर (netInfo!=null &&netInfo.isConnectedOrConnecting ()) {वापसी सच; } विवरण झूठा है; } 

अद्यतन करने और हटाने के लिए सर्वर पर मानों को पास करने के लिए सम्मिलित विधि का उपयोग करें और इस तरह से अपडेट करने के लिए बस insert2.php की क्वेरी बदलें

if($r=mysql_query("update emp_info SET Employee_name ='$name' WHERE Employee_name ='$id'",$con)) {$flag['code']=1; }  

हटाने के लिए

if($r=mysql_query("emp_info से हटाएं जहां कर्मचारी_नाम ='$name'",$con)) {$flag['code']=1; गूंज "हाय"; } 

इसके अलावा, जब आप इसे सीख लेते हैं, तो अगला कार्य आपको थ्रेडिंग सीखना चाहिए और इसे और बेहतर बनाने के लिए एसिनटास्क करना चाहिए क्योंकि एंड्रॉइड में मुख्य थ्रेड पर काम करना अच्छा नहीं है। बस इस इंसर्ट मेथड को Asyntask में डालें जैसा कि मैंने रीडिंग मेथड में उल्लेख किया है ताकि UI परेशान न हो और इंटरनेट का काम बैकग्राउंड में हो।

नोट:

PHP के नए संस्करण के लिए . के बाद इस लाइन को जोड़ें स्निपेट

error_reporting(E_ALL ^ ​​E_DEPRECATED); 



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL क्लोजर टेबल पदानुक्रमित डेटाबेस - सही क्रम में जानकारी कैसे निकालें

  2. चर से mysql फ़ील्ड नाम

  3. Mysql2 और Rails3 (बंडलर) के साथ रनटाइम त्रुटि

  4. MySQL क्यों कर्सर.एक्सक्यूट (एसक्यूएल, मल्टी =ट्रू) काम नहीं करता है लेकिन 2 कर्सर.एक्सक्यूट (एसक्यूएल) काम करता है?

  5. SQL DELETE के साथ WHERE कंडीशन के लिए एक और टेबल में शामिल हों