我一直在試圖創建一個應用程序來連接到運行在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