verbinden android-apps auf die mysql-Datenbank
Habe ich versucht aus dem tutorial gezeigt, die auf verschiedenen websites zum herstellen einer MySQL-Datenbank mit php auf android. Ich weiß nicht, was ist Los mit meinem code unten. Kann mir jemand sagen, was ich tun muss.
Dies ist mein php-code
<?php
mysql_connect("localhost","root","sugi");
mysql_select_db("android");
$q=mysql_query("SELECT * FROM people
WHERE
birthyear>'".$_REQUEST['year']."'");
while($e=mysql_fetch_assoc($q))
$output[]=$e;
print(json_encode($output));
mysql_close(); ?>
Dies ist meine sql-Abfrage
CREATE TABLE `people` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`name` VARCHAR( 100 ) NOT NULL ,
`sex` BOOL NOT NULL DEFAULT '1',
`birthyear` INT NOT NULL
)
Dies ist mein java-code in android
public class main extends Activity {
InputStream is;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
String result = "";
//the year data to send
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("year","1990"));
//http post
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://localhost/index.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
Log.e("log_tag", "connection success ");
Toast.makeText(getApplicationContext(), "pass", Toast.LENGTH_SHORT).show();
}catch(Exception e){
Log.e("log_tag", "Error in http connection "+e.toString());
Toast.makeText(getApplicationContext(), "fail", Toast.LENGTH_SHORT).show();
}
//convert response to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
Toast.makeText(getApplicationContext(), "pass", Toast.LENGTH_SHORT).show();
}
is.close();
result=sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
Toast.makeText(getApplicationContext(), "fail", Toast.LENGTH_SHORT).show();
}
//parse json data
try{
JSONArray jArray = new JSONArray(result);
for(int i=0;i<jArray.length();i++){
JSONObject json_data = jArray.getJSONObject(i);
Log.i("log_tag","id: "+json_data.getInt("id")+
", name: "+json_data.getString("name")+
", sex: "+json_data.getInt("sex")+
", birthyear: "+json_data.getInt("birthyear")
);
Toast.makeText(getApplicationContext(), "pass", Toast.LENGTH_SHORT).show();
}
}catch(JSONException e){
Log.e("log_tag", "Error parsing data "+e.toString());
Toast.makeText(getApplicationContext(), "fail", Toast.LENGTH_SHORT).show();
}
}
}
Dem Programm gut arbeiten. aber ich kann keine Verbindung aufbauen zu http://localhost/index.php
. Die Programm-Anzeige scheitern 3 mal. Kann mir helfen zu sehen, wo ich schief?
Danke allen für die Hilfe. Jetzt bin ich in der Lage, die mysql-Verbindung. Aber ich kann nicht den Wert von json-Daten. Das prog toast eine msg 2-pass und 1 Fehler. Kann mir jemand helfen? Das Bild unten ist wenn ich http://localhost/index.php
in meinem IE. Und die Linie 6 ist all dies
$q=mysql_query("SELECT * FROM people WHERE birthyear>'".$_REQUEST['year']."'");
Ich weiß nicht, wo ich schief geht.
InformationsquelleAutor sugianto | 2011-04-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Ihr php-Skript bereitgestellt wird, der auf localhost, und Sie werden die Bereitstellung Ihr android app auf emulator dann sollten Sie diesen Konstruktor:
HttpPost httppost = new HttpPost("http://10.0.2.2/index.php");
Finden Sie unter: http://developer.android.com/guide/developing/devices/emulator.html#emulatornetworking
Hi, Danke alot Mann. Schließlich kann Es eine Verbindung zu meinem sql :D. Aber ich kann nicht den Wert meiner json_data. Die emulator-display 2 Pässe und 1 Fehler. Ich vermute, es ist etwas falsch mit meinem php. Bin ich im Recht? Können Sie mir helfen, dieses problem lösen?
Versuchen Sie das Debuggen Ihres Skripts mit unterschiedlichen client, zu sehen, wenn die Http-Antwort ist richtig.
Können Sie mir sagen, das script mit einem anderen client? Sorry, ich bin ziemlich neu für all dies.
wenn ich "localhost/index.php" auf meinem DH, es zeigt das Bild oben.
InformationsquelleAutor Andrey Marchenko
das problem ist, dass du versuchst, etwas zugreifen, die auf localhost. Localhost wird Ihr Handy, wenn der code lief. Wenn Sie den emulator verwenden können Sie die Lösung von Andrej.
Ansonsten musst du wissen, die ip-Adresse Ihres Computers, wenn Sie mit wifi in einem lokalen Netzwerk. Oder wenn Sie 3G, Edge, GSM-internet. Sie sollten die Eingabe der ip des Computers.
Können Sie es gehen: http://whatismyip.com
Wenn Sie einen router verwenden oder Ihr isp blockiert den http-port (80). Müssen Sie eine port-Umleitung auf etwas anderes. Meine Vermutung ist, dass Sie sollten testen Sie die url mit Ihrem Handy und den web-browser.
InformationsquelleAutor Loïc Faure-Lacroix
Ändern, dass Sie auf Ihre localhost-ip-Adresse.
Ich bin ziemlich neu in android-apps, aber ich weiß, wenn Sie Ihre post zu http://192.168.x.x (dein localhost, die lokale ip-Adresse in Ihrem router), sollten Sie in der Lage sein, um es einfach nur gut. Ich betreibe eine WAMP-Umgebung und vor ich hätte Probleme beim Zugriff auf meinen development Rechner localhost aus anderen Computern in meinem Netzwerk. Alles, was ich Tat, war sicher, dass ich mein WAMP-server ONLINE. Wenn Sie auf WAMP-Symbol sehen Sie "Online" oder "Offline". Dann könnte ich meine Webseiten auf einem anderen Laptop in meinem localnetwork über http://192.168.x.x/android/index.php gut.
InformationsquelleAutor B Nasty
versuchen http://127.0.0.1/index.php statt "localhost"
Sieht für mich wie hes arbeiten mit dem emulator, ich hatte Probleme mit der Verwendung von "localhost" und als ich geändert, um die Adresse 127.0.0.1 hat es geklappt.
Nicht mein Punkt, den webserver/mysql ist nicht auf localhost. Und auch im emulator localhost ist immer noch das Telefon und nicht den host-computer.
InformationsquelleAutor James