2013-12-15 2 views
0

Я начинающий для Android Eclipse. Тем не менее, у меня есть проект для приложения для Android. Я не могу подключиться к эмулятору Android, используя соединитель MySQL, чтобы создать страницу входа. Я пропустил важный файл?Подключение базы данных с использованием соединителя MySQL

LoginPage

package com.example.logininterface; 

import com.example.logininterface.R.menu; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class MainActivity extends Activity { 

    EditText txtUserName; 
    EditText txtPassword; 
    Button btnLogin; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     txtUserName = (EditText)this.findViewById(R.id.txtUname); 
     txtPassword = (EditText)this.findViewById(R.id.txtPwd); 
     btnLogin = (Button)this.findViewById(R.id.btnLogin); 
     btnLogin.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       if ((txtUserName.getText().toString()).equals(txtPassword.getText().toString())) { 
        Toast.makeText(MainActivity.this, "Login Successful", Toast.LENGTH_LONG).show(); 
       } 
       else { 
        Toast.makeText(MainActivity.this, "Invalid Login", Toast.LENGTH_LONG).show(); 
       } 
      } 
     }); 
    } 
} 

MySQLConn

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 

public class Main { 

    public static void main(String[] args) throws Exception 
    { 
     Class.forName("com.mysql.jdbc.Driver"); 

     Connection con = DriverManager.getConnection(
      "jdbc:mysql://localhost:3306/mobiledb", "teddy", "password"); 

     PreparedStatement statement = con.prepareStatement("select * from androidlogin"); 
     ResultSet result = statement.executeQuery(); 

     while(result.next()) 
     { 
      System.out.println(result.getString(1) + "" + result.getString(2)); 
     } 
    } 
} 
+0

Любое исключение, с которым вы столкнулись? – Deepak

+0

Я верю, что я что-то упустил в своих кодировках. Я могу получить доступ к базе данных myqsl, используя java в eclipse. но не в эмуляторе. – user2889611

ответ

2

Я не думаю, что доступ к любой базе данных прямо с уровня Android - хорошая идея. Было бы лучше, если бы вы могли передавать требуемые параметры на страницу сервера (PHP, JSP и т. Д.), А соединения с базами данных могли быть сделаны с серверных страниц.

На ваш вопрос, localhost означает Android в этом случае, поэтому он будет искать базу данных MySQL внутри вашего эмулятора. Вместо этого вам необходимо использовать IP-адрес вашего компьютера. Перейдите к терминалу и введите ipconfig или ifconfig, если вы находитесь на машине * nix/Macintosh, чтобы получить IP-адрес.

+0

означает, что я установил файл php для подключения к mysql? – user2889611

+0

О, им жаль, но я не совсем понимаю, что такое компьютер. будет ли у вас возможность подробно остановиться на этом? – user2889611

+0

@userVee откройте командную строку и введите «ipconfig» и найдите «IP-адрес» в списке. - Кроме того, откат до версии 1, '10.0.0.X' не является IP-адресом по умолчанию для всех, для некоторых это будет' 192.168.1.X' – user88975

0

Вместо того, чтобы использовать "Localhost" использование 10.0.2.2. Надеюсь, поможет!

+0

Я буду работать над этим. спасибо – user2889611

1

Я предлагаю использовать JSON с PHP для подключения к базе данных MySQL. Это просто мнение.

+0

уверен, что я попробую это. спасибо :) – user2889611

1

Лучше использовать JSON для связи с PHP-скриптом и внутри PHP-скрипта для связи с вашей локальной базой данных MySQL. И вы можете попробовать это, чтобы подключиться к вашему скрипту PHP.

Пример:

public class Login { 

    ... 
    private static final String LOGIN_URL = "http://XXX.XXX.X.XX/Example/login.php"; 
    ... 

    // Invoke by Intent activity by Login class 
    class AttemptLogin extends AsyncTask<String, String, Integer> { 

     ... 
     protected void onPreExecute() { 
      .... 
     } 

     protected Integer doInBackground() { 
      .... 
      // Getting product details by making HTTP request 
      JSONObject json = jsonParser.makeHttpRequest(LOGIN_URL, "POST", 
                 params); 
      .... 
     } 

     protected void onPostExecute() { 
      .... 
     } 
    } 

XXX.XXX.X.XX является локальный IP-адрес компьютера, что означает, когда мобильный подключается к той же сети, что и компьютер, IP-адрес это локальный IP-адрес компьютера. Не помещайте в localhost. Это не сработает.

Смежные вопросы