使用MySQL连接器连接数据库

时间:2013-12-15 13:30:19

标签: java android mysql eclipse android-emulator

我是Android Eclipse的初学者。但是,我有一个项目来做一个Android应用程序。我无法使用MySQL连接器连接到Android模拟器来创建登录页面。我错过了一个重要文件吗?

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));
        }
    }
}

4 个答案:

答案 0 :(得分:2)

我不认为直接从Android层访问任何数据库是一个好主意。如果您可以将所需参数传递到服务器页面(PHP,JSP等)并且可以从服务器页面完成数据库连接,那会更好。

提出您的问题,localhost在这种情况下意味着Android,因此它将在您的模拟器中寻找MySQL数据库。相反,您需要使用计算机的IP地址。如果您在* nix / Macintosh计算机上,请转到终端并键入ipconfigifconfig以获取IP地址。

答案 1 :(得分:1)

我建议使用JSON和PHP连接到MySQL数据库。这只是一个意见。

答案 2 :(得分:1)

最好使用JSON与PHP脚本进行通信,并在PHP脚本中与localhost 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。 无法使用

答案 3 :(得分:0)

而不是使用“Localhost”使用10.0.2.2。希望它有所帮助!