côté application Android:
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;
}
côté serveur:
donc le fichier GetAllData.php sur le serveur est:
<?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();
?>
Ceci est un exemple je récemment. Juste pour noter dans le fichier php. J'importe Connection.php ceci traite juste de la connexion à la base de données. Il suffit donc de remplacer cela par votre code de connexion à MYSQL db. J'ai aussi importé SendAPI.php (que vous pouvez simplement ignorer) C'était juste ma classe pour envoyer des données. Fondamentalement, il contenait certaines des requêtes que je voulais utiliser. Comme sendAccelerationData(). Fondamentalement, la classe était similaire à celle des procédures stockées.
Comment je me suis connecté à la base de données était dans ma classe 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);
}
}
Remarque dans les messages d'erreur J'ai imprimé le schéma sur db tel que nom/nom de table db. C'était juste un dépannage. Je conseille contre cela. Vous ne voulez pas afficher cette information à l'utilisateur.