Java serverResponse=“无法连接到数据库”; Log.e(“Error_Tag”,e.toString()); } 返回服务器响应; } @凌驾 受保护的void onPostExecute(字符串结果) { displayCars.setText(结果); int responseCheck=Integer.parseInt(结果); 如果(responseCheck

Java serverResponse=“无法连接到数据库”; Log.e(“Error_Tag”,e.toString()); } 返回服务器响应; } @凌驾 受保护的void onPostExecute(字符串结果) { displayCars.setText(结果); int responseCheck=Integer.parseInt(结果); 如果(responseCheck,java,android,jdbc,xampp,Java,Android,Jdbc,Xampp,我让应用程序正常工作。我使用了HttpClient方法。我将代码添加到AsyncTask内部类中。在PHP方面,我没有给出运行服务器的pc的ip,而是使用了本地主机。下面是代码,希望这将对将来的用户有所帮助 将\u连接到\u database.php <?php //Parameters for connecting to the database $hostname = "localhost"; $database_name = "dbname"; $username = "user"

我让应用程序正常工作。我使用了HttpClient方法。我将代码添加到AsyncTask内部类中。在PHP方面,我没有给出运行服务器的pc的ip,而是使用了本地主机。下面是代码,希望这将对将来的用户有所帮助

将\u连接到\u database.php

<?php

//Parameters for connecting to the database
$hostname = "localhost";
$database_name = "dbname";
$username = "user";
$password = "pass";

//Connection String. If it fails causes error message
$connection = mysql_connect($hostname,$username,$password) or trigger_error(mysql_error(),E_USER_ERROR);

//Access the database
mysql_select_db($database_name, $connection);

/*Query to get number of cars and execute the query
 *If there is a problem with the query an error is returned */
$get_number_of_cars = "SELECT VehicleDetected FROM entry ";
$query_runner = mysql_query($get_number_of_cars) or die(mysql_error());
$counter = 0;

while($row = mysql_fetch_array($query_runner))
{
    $counter++;
}

echo $counter;
?>

ViewCarsEntered.java

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.TextView;

public class ViewCarsEntered extends Activity implements OnTouchListener
{

private TextView displayCars;
private TextView displaySuggestionMessage;
private HttpPost post;
private HttpResponse httpResponse;
private HttpClient client;
private ProgressDialog dialog = null;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_cars_entered);
    displayCars = (TextView)findViewById(R.id.carSpaceDisplay);
    displaySuggestionMessage = (TextView)findViewById(R.id.carSpaceSuggestionsBox);
    displayCars.setOnTouchListener(this);
}

/**
 * Connect to the database 
 * @return String
 */
private class ConnectToDatabase extends AsyncTask<String,Void,String>
{
    @Override
    protected String doInBackground(String... arg0) 
    {
        String serverResponse = " ";

        try
        {
            client = new DefaultHttpClient();
            post = new HttpPost("http://server_ip/folder_for_php_script/connect_to_database.php");
            httpResponse = client.execute(post);

            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            serverResponse = client.execute(post, responseHandler);

        }catch(Exception e){
            serverResponse = "Could not connect to Database";
            Log.e("Error_Tag", e.toString());
        }
        return serverResponse;
    }

    @Override
    protected void onPostExecute(String result)
    {
        displayCars.setText(result);

        int responseCheck = Integer.parseInt(result);

        if( responseCheck <= 7 )
        {
            displayCars.setTextColor(Color.BLACK);
            displaySuggestionMessage.setText("It is ok to park in the main car park");
        }

        else if( responseCheck <= 11)
        {
            displayCars.setTextColor(Color.YELLOW);
            displaySuggestionMessage.setText("You may want to try the B block");
        }

        else if( responseCheck >= 12)
        {
            displayCars.setTextColor(Color.RED);
            displaySuggestionMessage.setText("Consider Alternate Parking");
        }
    }   
}

/**
 * Constructor for the AsynchronousTask inner Class
 */
public void ConnectToDatabase()
{
    ConnectToDatabase connect = new ConnectToDatabase();
    connect.execute();
}

@Override
public boolean onTouch(View v, MotionEvent event) 
{
    ConnectToDatabase();
    return true;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.view_cars_entered, menu);
    return true;
}
}
import org.apache.http.HttpResponse;
导入org.apache.http.client.HttpClient;
导入org.apache.http.client.ResponseHandler;
导入org.apache.http.client.methods.HttpPost;
导入org.apache.http.impl.client.BasicResponseHandler;
导入org.apache.http.impl.client.DefaultHttpClient;
导入android.app.Activity;
导入android.app.ProgressDialog;
导入android.graphics.Color;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.util.Log;
导入android.view.Menu;
导入android.view.MotionEvent;
导入android.view.view;
导入android.view.view.OnTouchListener;
导入android.widget.TextView;
公共类ViewCarsEntered扩展了活动实现OnTouchListener
{
私家车;
私有文本视图显示建议消息;
私人HttpPost;
私人HttpResponse HttpResponse;
私有HttpClient;
private ProgressDialog=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u view\u cars\u entered);
displayCars=(TextView)findViewById(R.id.carSpaceDisplay);
displaySuggestionMessage=(TextView)findViewById(R.id.CarSpaceSuggestionBox);
displayCars.setOnTouchListener(此);
}
/**
*连接到数据库
*@返回字符串
*/
私有类ConnectToDatabase扩展异步任务
{
@凌驾
受保护的字符串doInBackground(字符串…arg0)
{
字符串serverResponse=“”;
尝试
{
client=新的DefaultHttpClient();
post=新的HttpPost(“http://server_ip/folder_for_php_script/connect_to_database.php");
httpResponse=client.execute(post);
ResponseHandler ResponseHandler=新BasicResponseHandler();
serverResponse=client.execute(post,responseHandler);
}捕获(例外e){
serverResponse=“无法连接到数据库”;
Log.e(“Error_Tag”,e.toString());
}
返回服务器响应;
}
@凌驾
受保护的void onPostExecute(字符串结果)
{
displayCars.setText(结果);
int responseCheck=Integer.parseInt(结果);

if(responseCheck)检查您的应用程序是否在清单上声明了internet权限?当您运行代码时会发生什么情况?您是否收到数据库的响应或出现异常?定义“不适用于我”也就是说,如果您使用的是Android 4.x,任何试图从主UI线程上的设备访问网络的尝试都将导致
NetworkOnMainThreadException
。可能需要检查您的日志猫。与中不同,当我在我的设备上运行应用程序时,始终会显示我的错误日志消息。“log.e(“error_tag,”无法建立到数据库的连接“;”。我也在清单中添加了internet权限。我在logcat中搜索了NetworkOnMainThreadException,但未找到任何结果。我使用的是4.2.2。你的应用程序是否在清单上声明了internet权限?当你运行代码时会发生什么?你是否收到数据库的响应或收到异常?定义“不适用于我”也就是说,如果您使用的是Android 4.x,任何试图从主UI线程上的设备访问网络的尝试都将导致
NetworkOnMainThreadException
。可能需要检查您的日志猫。与中不同,当我在我的设备上运行应用程序时,始终会显示我的错误日志消息。“log.e(“error_tag,”无法建立到数据库“;”的连接。我也在清单中添加了internet权限。我在logcat中搜索了NetworkOnMainThreadException,但没有找到任何结果。我使用的是4.2.2。
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;

import android.app.Activity;
import android.app.ProgressDialog;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.TextView;

public class ViewCarsEntered extends Activity implements OnTouchListener
{

private TextView displayCars;
private TextView displaySuggestionMessage;
private HttpPost post;
private HttpResponse httpResponse;
private HttpClient client;
private ProgressDialog dialog = null;

@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_view_cars_entered);
    displayCars = (TextView)findViewById(R.id.carSpaceDisplay);
    displaySuggestionMessage = (TextView)findViewById(R.id.carSpaceSuggestionsBox);
    displayCars.setOnTouchListener(this);
}

/**
 * Connect to the database 
 * @return String
 */
private class ConnectToDatabase extends AsyncTask<String,Void,String>
{
    @Override
    protected String doInBackground(String... arg0) 
    {
        String serverResponse = " ";

        try
        {
            client = new DefaultHttpClient();
            post = new HttpPost("http://server_ip/folder_for_php_script/connect_to_database.php");
            httpResponse = client.execute(post);

            ResponseHandler<String> responseHandler = new BasicResponseHandler();
            serverResponse = client.execute(post, responseHandler);

        }catch(Exception e){
            serverResponse = "Could not connect to Database";
            Log.e("Error_Tag", e.toString());
        }
        return serverResponse;
    }

    @Override
    protected void onPostExecute(String result)
    {
        displayCars.setText(result);

        int responseCheck = Integer.parseInt(result);

        if( responseCheck <= 7 )
        {
            displayCars.setTextColor(Color.BLACK);
            displaySuggestionMessage.setText("It is ok to park in the main car park");
        }

        else if( responseCheck <= 11)
        {
            displayCars.setTextColor(Color.YELLOW);
            displaySuggestionMessage.setText("You may want to try the B block");
        }

        else if( responseCheck >= 12)
        {
            displayCars.setTextColor(Color.RED);
            displaySuggestionMessage.setText("Consider Alternate Parking");
        }
    }   
}

/**
 * Constructor for the AsynchronousTask inner Class
 */
public void ConnectToDatabase()
{
    ConnectToDatabase connect = new ConnectToDatabase();
    connect.execute();
}

@Override
public boolean onTouch(View v, MotionEvent event) 
{
    ConnectToDatabase();
    return true;
}

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.view_cars_entered, menu);
    return true;
}
}