我一直在试图创建一个应用程序来连接到运行在xampp服务器上的数据库。过去我做了一个java应用程序来完成这项工作,我使用JDBC连接到数据库。我检查了这是否适用于android,我发现一个教程,其中的JDBC在Android上使用,但它不适用于我。我连接数据库的另外两个尝试是HttpURLConnection和HttpClient方法。我从浏览中找到的解决方案尚未解决我的问题。我尝试的两种解决方案是,编辑xampp httpd-xampp.conf以允许任何连接。第二个是在PhpMyAdmin privilages部分为手机添加一个用户。我不知道我还可以尝试其他选择。任何人都可以给我任何意见这个问题。一个普通的java应用程序可以连接到服务器,没有问题,我也可以访问我的电话网页浏览器上的服务器。这只是不能建立连接的应用程序。我无法让我的android应用程序连接到我的xampp服务器上的外部数据库
编辑接下来的问题我发现here。我试着用JDBC连接到我的数据库,使用AsyncTask发布该问题的用户没有麻烦进行连接。所以,我不认为我在哪里我的代码去错在这里,如果满级
应用程序代码
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import android.app.Activity;
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;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_view_cars_entered);
displayCars = (TextView)findViewById(R.id.carSpaceDisplay);
displayCars.setOnTouchListener(this);
}
/**
* Connect to the database
* @return String
*/
private class ConnectToDatabase extends AsyncTask<String,Void,String>
{
@Override
protected String doInBackground(String... arg0)
{
String response = " ";
String total = "";
int rowCounter = 0;
try
{
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://server_ip:3306/dbname", "username", "password");
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("SELECT VehicleDetected FROM entry");
while(resultSet.next())
{
rowCounter++;
}
total = Integer.toString(rowCounter);
response = " I am connected to the database";
Log.d("DebugTag", response);
}catch(Exception e){
response = "Couldn't get a connection";
Log.e("Error_Tag", response);
}
return response;
}
@Override
protected void onPostExecute(String result)
{
displayCars.setText(result);
}
}
/**
* 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 false;
}
@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;
}
}
请问您的应用程序已经在清单中声明Internet权限?当你运行你的代码时会发生什么?你是否从你的数据库得到回应,或者你有异常? – caiocpricci2 2013-04-21 00:33:47
定义“不适合我”。也就是说,如果您使用的是Android 4.x,则任何尝试从主UI线程上的设备访问网络都将导致“NetworkOnMainThreadException”。可能想检查你的logcat。 – 323go 2013-04-21 00:43:16
没有工作,当我在我的设备上运行应用程序时,我的错误日志消息总是显示出来。“Log.e(”error_tag“,”无法建立与数据库的连接“);”。我已经在清单中添加了Internet权限 – PyGuy91 2013-04-21 13:42:32