我是android的初学者。我正在尝试将android连接到mysql。但应用程序无法解密。请修复我的问题:
我尝试使用此代码将php连接到mysql。我在布局文件中使用textview。我也在internet permission
中添加了manifest
。
我的代码是:
public class AndroidConnectActivity extends Activity
{
private TextView outputStream;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_android_connect);
JSONArray jArray;
String result = null;
InputStream is = null;
StringBuilder sb = null;
outputStream = (TextView)findViewById(R.id.hello_world);
ArrayList<NameValuePair> namevaluepairs = new ArrayList<NameValuePair>();
try
{
//http post
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://localhost/android/index.php");
httppost.setEntity(new UrlEncodedFormEntity(namevaluepairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
if (response.getStatusLine().getStatusCode() != 200)
{
Log.d("MyApp", "Server encountered an error");
}
}
catch(Exception e)
{
Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
}
//Convert response to string
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF8"));
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
is.close();
result = sb.toString();
}
catch(Exception e)
{
Log.e("log_tag", "Error converting result "+e.toString());
}
//END Convert response to string
try
{
jArray = new JSONArray(result);
JSONObject json_data=null;
for(int i=0;i<jArray.length();i++)
{
json_data = jArray.getJSONObject(i);
int id=json_data.getInt("id");
String name=json_data.getString("name");
outputStream.append(id +"" + name + "\n");
}
}
catch(JSONException e1)
{
e1.printStackTrace();
}
catch (ParseException e1)
{
e1.printStackTrace();
}
}
}
<?php
mysql_connect("localhost","root","");
mysql_select_db("android");
$sql=mysql_query("SELECT * FROM table_1 Where name like 'M%' ");
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
?>
答案 0 :(得分:1)
在http://localhost/android/index.php
答案 1 :(得分:0)
使用eclipse android插件调试你的应用程序。必然会抛出错误或异常,您需要找出它是什么。
答案 2 :(得分:0)
看起来你错过了大括号:
while($row=mysql_fetch_assoc($sql))
{
$output[]=$row;
print(json_encode($output));
}
答案 3 :(得分:0)
您可能无法使用“http:// localhost / ..”从模拟器连接到本地主机 试试这个“http://10.0.2.2/ ..”。 还要在代码之间添加一些logs,并尝试发现在哪行之后您会收到错误。
答案 4 :(得分:0)
最后我确定了我的错误。我提到了代码。它运行正常。它会从数据库中检索数据。
public class AndroidConnectActivity extends Activity
{
private TextView outputStream;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_android_connect);
JSONArray jArray;
String result = null;
InputStream is = null;
StringBuilder sb = null;
outputStream = (TextView)findViewById(R.id.hello_world);
ArrayList<NameValuePair> namevaluepairs = new ArrayList<NameValuePair>();
try
{
//http post
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2/android/index.php");
httppost.setEntity(new UrlEncodedFormEntity(namevaluepairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
if (response.getStatusLine().getStatusCode() != 200)
{
Log.d("MyApp", "Server encountered an error");
}
}
catch(Exception e)
{
Toast.makeText(getBaseContext(),e.toString() ,Toast.LENGTH_LONG).show();
}
//Convert response to string
try
{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF8"));
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line = null;
while ((line = reader.readLine()) != null)
{
sb.append(line + "\n");
}
is.close();
result = sb.toString();
}
catch(Exception e)
{
Log.e("log_tag", "Error converting result "+e.toString());
}
//END Convert response to string
try
{
jArray = new JSONArray(result);
JSONObject json_data=null;
for(int i=0;i<jArray.length();i++)
{
json_data = jArray.getJSONObject(i);
outputStream.append( "\n"+"Id="+json_data.getString("id") +"\t"+"Name=" + json_data.getString("name") + "\n");
result += "\n" + jArray.getJSONObject(i);
}
}
catch(JSONException e1)
{
e1.printStackTrace();
}
catch (ParseException e1)
{
e1.printStackTrace();
}
}
}
Index.php
<?php
mysql_connect("localhost","root","");
mysql_select_db("android");
$sql=mysql_query("SELECT * FROM table_1 ");
while($row=mysql_fetch_assoc($sql))
$output[]=$row;
print(json_encode($output));
mysql_close();
?>
在运行应用程序之前。您应该启动localserver(xamp)