Php 将数据发送到JSON以实现数据库连接
下面的代码使用web服务和JSON从数据库中选择数据 MainActivity.java:Php 将数据发送到JSON以实现数据库连接,php,android,mysql,database,json,Php,Android,Mysql,Database,Json,下面的代码使用web服务和JSON从数据库中选择数据 MainActivity.java: public class MainActivity extends Activity { RetrievingDataFromDatabase retrievingTask; TextView resultView; String s; @Override protected void onCreate(Bundle savedInstanceState) {
public class MainActivity extends Activity {
RetrievingDataFromDatabase retrievingTask;
TextView resultView;
String s;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//StrictMode.enableDefaults();
retrievingTask = new RetrievingDataFromDatabase();
retrievingTask.execute((Void) null);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void getData(){
resultView = (TextView) findViewById(R.id.textView1);
String result = "";
InputStream isr = null;
try{
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://PHP FILE LINK");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
isr = entity.getContent();
}
catch(Exception e){
Log.e("log_tag","Error in http connection"+e.toString());
resultView.setText("Couldnt connect to database");
}
//converting to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(isr,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null){
sb.append(line + "\n");
}
isr.close();
result = sb.toString();
}
catch(Exception e){
Log.e("log_tag", "Error converting result"+ e.toString());
}
//parse data
try{
s = "";
JSONArray jArray = new JSONArray(result);
for(int i = 0;i<jArray.length();i++){
JSONObject json = jArray.getJSONObject(i);
s = s + json.getString("StdId").toString();
}
//resultView.setText(s);
}
catch(Exception e){
Log.e("Log_tage", "Error Parsing Data"+e.toString());
}
}
class RetrievingDataFromDatabase extends AsyncTask<Void, Void, Boolean> {
@Override
protected Boolean doInBackground(Void... params) {
getData();
return null;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
resultView.setText(s);
}
}
}
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
public JSONParser() {
}
public JSONObject getJSONFromUrl(String url) {
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
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");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
}
<?php
$con = mysql_connect("***","***","***");
if (!$con)
{
die('Could not Connect:' . mysql_error());
}
mysql_select_db("database_name",$con);
$result = mysql_query("SELECT STID FROM database_name");
while($row = mysql_fetch_assoc($result))
{
$output[]=$row;
}
print(json_encode($output));
mysql_close($con);
?>
PHP文件:
public class MainActivity extends Activity {
RetrievingDataFromDatabase retrievingTask;
TextView resultView;
String s;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//StrictMode.enableDefaults();
retrievingTask = new RetrievingDataFromDatabase();
retrievingTask.execute((Void) null);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void getData(){
resultView = (TextView) findViewById(R.id.textView1);
String result = "";
InputStream isr = null;
try{
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet("http://PHP FILE LINK");
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
isr = entity.getContent();
}
catch(Exception e){
Log.e("log_tag","Error in http connection"+e.toString());
resultView.setText("Couldnt connect to database");
}
//converting to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(isr,"iso-8859-1"),8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null){
sb.append(line + "\n");
}
isr.close();
result = sb.toString();
}
catch(Exception e){
Log.e("log_tag", "Error converting result"+ e.toString());
}
//parse data
try{
s = "";
JSONArray jArray = new JSONArray(result);
for(int i = 0;i<jArray.length();i++){
JSONObject json = jArray.getJSONObject(i);
s = s + json.getString("StdId").toString();
}
//resultView.setText(s);
}
catch(Exception e){
Log.e("Log_tage", "Error Parsing Data"+e.toString());
}
}
class RetrievingDataFromDatabase extends AsyncTask<Void, Void, Boolean> {
@Override
protected Boolean doInBackground(Void... params) {
getData();
return null;
}
@Override
protected void onPostExecute(Boolean result) {
super.onPostExecute(result);
resultView.setText(s);
}
}
}
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
public JSONParser() {
}
public JSONObject getJSONFromUrl(String url) {
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
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");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
}
<?php
$con = mysql_connect("***","***","***");
if (!$con)
{
die('Could not Connect:' . mysql_error());
}
mysql_select_db("database_name",$con);
$result = mysql_query("SELECT STID FROM database_name");
while($row = mysql_fetch_assoc($result))
{
$output[]=$row;
}
print(json_encode($output));
mysql_close($con);
?>
3-从数据库检索到的数据被保存到PHP文件中,然后PHP将结果发送到android应用程序
很抱歉解释得太长,但我需要帮助。我将为您提供一个示例代码,用于从android标记当前位置,并将详细信息发送到服务器php文件,并用php创建一个新记录。。这里我给出了php文件。。我假设您知道如何从android解析json。如果不是,我也会给你的
// check for required fields
if (isset($_POST['location']) && isset($_POST['email']) && isset($_POST['lat']) && isset($_POST['longitude'])) {
$location = $_POST['location'];
$email = $_POST['email'];
$lat = $_POST['lat'];
$longitude = $_POST['longitude'];
require_once 'config.php';
// connecting to mysql
$con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
// selecting database
mysql_select_db(DB_DATABASE);
// mysql inserting a new row
$result = mysql_query("INSERT INTO marked_locations(location, email,lat,longitude) VALUES('$location', '$email', '$lat','$longitude')");
.....
..
位置、电子邮件、纬度、经度值a随android的json一起提供Hi,你能更清楚地描述这个问题吗?还可以添加关于您拥有的内容或问题所在的代码。现在看来,你有一种方法,想做相反的事情。不清楚我已经编辑了这个问题,请检查一下它的答案@Dehan,但我有一个问题,$_POST['location']是来自android应用程序的值吗?对不起@Dehan,我刚刚看到了代码后的最后一行谢谢,我会尝试一下,希望它能起作用:)