Java serverResponse=“无法连接到数据库”; Log.e(“Error_Tag”,e.toString()); } 返回服务器响应; } @凌驾 受保护的void onPostExecute(字符串结果) { displayCars.setText(结果); int responseCheck=Integer.parseInt(结果); 如果(responseCheck
我让应用程序正常工作。我使用了HttpClient方法。我将代码添加到AsyncTask内部类中。在PHP方面,我没有给出运行服务器的pc的ip,而是使用了本地主机。下面是代码,希望这将对将来的用户有所帮助 将\u连接到\u database.phpJava 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"
<?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;
}
}