Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Połącz się ze zdalną bazą danych MySQL za pomocą Androida

Strona aplikacji na Androida:

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;
}

Strona serwera:

więc plik GetAllData.php na serwerze to:

<?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();
?>

To jest przykład, którego użyłem ostatnio. Wystarczy zauważyć w pliku php. Importuję Connection.php, zajmuje się to tylko połączeniem z bazą danych. Więc po prostu zastąp to swoim kodem do łączenia się z bazą danych MYSQL. Zaimportowałem też SendAPI.php (który możesz po prostu zignorować) To była tylko moja klasa do wysyłania danych. Zasadniczo zawierał niektóre zapytania, których chciałem użyć. Takich jak sendAccelerationData(). Zasadniczo klasa była podobna do procedur składowanych.

Sposób podłączenia do bazy danych był w mojej klasie Connection.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);
}
}

Uwaga w komunikatach o błędach wydrukowałem schemat db, taki jak nazwa bazy danych/nazwa tabeli. To było tylko rozwiązywanie problemów. Odradzam temu. NIE chcesz wyświetlać tych informacji użytkownikowi.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. jak zbudować zagnieżdżony wybór na zend db

  2. MySQL - separator tysięcy

  3. CakePHP 1.3 - Nieznana kolumna, w której klauzula

  4. Jak sprawdzić, czy wartość już istnieje, aby uniknąć duplikatów?

  5. Czy wstrzyknięcie SQL jest rzeczywiście możliwe poprzez dodanie drugiego zapytania?