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

Android का उपयोग करके दूरस्थ MySQL डेटाबेस से कनेक्ट करें

एंड्रॉइड ऐप साइड:

private ArrayList<String> receiveData(String file, ArrayList<NameValuePair> data)
{
    InputStream is = null;
    ArrayList<String> output = new ArrayList<String>();
    String line = null;

    //Connect and obtain data via HTTP.
    try
    {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("http://www.blah.com/"+file);
        httppost.setEntity(new UrlEncodedFormEntity(data));
        HttpResponse response = httpclient.execute(httppost);
        HttpEntity entity = response.getEntity();
        is = entity.getContent();

    }
    catch(Exception e)
    {
        Log.e("log_tag", "Error in http connection "+e.toString());
    }

    //Parse data into ArrayList and return.
    try
    {
        BufferedReader reader = 
            new BufferedReader(new InputStreamReader(is,"iso-8859-1"));

        while ((line = reader.readLine()) != null) 
        {
            //Parse data into tokens and removing unimportant tokens.
            StringTokenizer st = new StringTokenizer(line, delims, false);

            while(st.hasMoreTokens())
            {
                String token = st.nextToken();
                output.add(token);
            }
        }

        is.close();
        //Log output of data in LogCat.
        Log.d("DATA","DATA:"+output);

    }
    catch(Exception e)
    {
        Log.e("log_tag", "Error converting result "+e.toString());
    }
    return output;
}

/**
 * Gets all  data from GetAllData.php
 * @return output - ArrayList containing  data.
 */
public ArrayList<String> getAllData(String row)
{
    fileName = "GetAllData.php";

    //Add arguments to arrayList<NameValuePairs> so we can encode the data and send it on.
    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
    nameValuePairs.add(new BasicNameValuePair("row", row));

    ArrayList<String> output = this.receiveData(fileName, nameValuePairs);
    return output;
}

सर्वर साइड:

तो सर्वर पर GetAllData.php फ़ाइल है:

<?php
/*
 * What this file does is it:
 * 1) Creates connection to database.
 * 2) Gets data from database.
 * 3) Encodes data to JSON. So this data can then be used by Android Application.
 * 4) Close database connection.
 */
 require_once $_SERVER['DOCUMENT_ROOT'].'/Clarity/Connection.php';
 require_once $_SERVER['DOCUMENT_ROOT'].'/Clarity/ReceiveAPI.php';

 $server = new Connection();
 $receive = new ReceiveAPI();

 //Retrieve information.
 $row = $_POST['row'];

//Connect to database.
$server->connectDB();
$output = $receive->getAllData($row); //basically method to query database.
print(json_encode($output)); //output is result of the query given back to app.

//Disconnect from database.
$server->disconnectDB();
?>

यह एक उदाहरण है जिसका मैंने हाल ही में उपयोग किया है। php फ़ाइल में बस नोट करने के लिए। मैं कनेक्शन आयात करता हूं। phpthis सिर्फ डेटाबेस से कनेक्शन से संबंधित है। तो बस इसे MYSQL db से कनेक्ट करने के लिए अपने कोड से बदलें। इसके अलावा मैंने SendAPI.php आयात किया (जिसे आप केवल अनदेखा कर सकते हैं) डेटा भेजने के लिए यह सिर्फ मेरी कक्षा थी। मूल रूप से इसमें कुछ प्रश्न शामिल थे जिनका मैं उपयोग करना चाहता था। जैसे SendAccelerationData ()। मूल रूप से वर्ग संग्रहित प्रक्रियाओं के समान था।

मैं डेटाबेस से कैसे जुड़ा, यह मेरे कनेक्शन.php वर्ग में था।

//Connect to a database.
public function connectDB()
{
    //Connect to SQL server.
    $this->connection = mysql_connect($this->hostName,$this->user,$this->password);

    if (!$this->connection) 
    {
        die('Could not connect: ' . mysql_error());
    }
    //Print("Connected to MySQL. </br>");

    //Select Database to query.
    $db_selected = mysql_select_db($this->database);
    if (!$db_selected) 
    {
        die('Could not select database' . mysql_error());
    }
    //Print("Database \"$this->database\" selected. </br>");
}

//Disconnect from database.
public function disconnectDB() 
{
    mysql_close($this->connection);
}
}

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




  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. एक ही स्टेटमेंट में कई कॉलम बदलें

  3. परिणाम कॉलम नाम के रूप में तालिका के कॉलम मानों में शामिल हों का चयन करना

  4. समूह concat . के भीतर द्वारा आदेश

  5. त्रुटि:ER_NOT_SUPPORTED_AUTH_MODE:क्लाइंट सर्वर द्वारा अनुरोधित प्रमाणीकरण प्रोटोकॉल का समर्थन नहीं करता है; MySQL क्लाइंट को अपग्रेड करने पर विचार करें