Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android应用程序在模拟器上工作,但不在设备上工作_Java_Android_Mysql_Jdbc - Fatal编程技术网

Java Android应用程序在模拟器上工作,但不在设备上工作

Java Android应用程序在模拟器上工作,但不在设备上工作,java,android,mysql,jdbc,Java,Android,Mysql,Jdbc,我创建了一个Android应用程序,它连接到本地MySQL数据库,通过JDBC检索一些示例数据。 当我使用仿真器运行应用程序时,它工作正常并加载数据。 当我从我的设备运行应用程序时,它会在加载数据时冻结,不会出现来自logcat的错误。 代码如下: import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLExceptio

我创建了一个Android应用程序,它连接到本地MySQL数据库,通过JDBC检索一些示例数据。 当我使用仿真器运行应用程序时,它工作正常并加载数据。 当我从我的设备运行应用程序时,它会在加载数据时冻结,不会出现来自logcat的错误。 代码如下:

   import java.sql.Connection;
   import java.sql.DriverManager;
   import java.sql.ResultSet;
   import java.sql.SQLException;
   import java.sql.Statement;
   import android.app.Activity;
   import android.app.ProgressDialog;
   import android.os.AsyncTask;
   import android.os.Bundle;
   import android.view.Menu;
   import android.view.MenuItem;
   import android.view.View;
   import android.view.View.OnClickListener;
   import android.widget.Button;
   import android.widget.TextView;
   import android.widget.Toast;

public class MainActivity extends Activity implements OnClickListener{
Button bottone;
boolean connected = false;
private TextView nome1;
private TextView cognome1;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    bottone = (Button)findViewById(R.id.button1);
    bottone.setOnClickListener(this);
    nome1 = (TextView) findViewById(R.id.text_name);
    cognome1 = (TextView) findViewById(R.id.text_surname);
}
class ConnectAsync extends AsyncTask<String, Void, String> {

private String name;
private String surname;
private ProgressDialog myProgress;

@Override
protected void onPreExecute()
{
    super.onPreExecute();
    myProgress = ProgressDialog.show(MainActivity.this, "Wait", "Loading..");
}

@Override
protected String doInBackground(String... urls) {

        String url = "jdbc:mysql://192.168.56.1/prova";
        String user = "myuser";
        String password = "mypsw";

        Connection connection = null;

        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection(url,user,password);
        } catch (ClassNotFoundException e) {
            System.out.println("Driver non caricato");
            e.printStackTrace();
        } catch (SQLException e) {
            e.printStackTrace();
            System.out.println("Errore con url e credenziali!");

        }

        if(connection!= null)
        {System.out.println("Connessione riuscita!");
        connected = true;}
        ResultSet rs = null;

        try {
            Statement stmt = connection.createStatement();
            String sql = "SELECT NOME,COGNOME FROM amici";
            rs = stmt.executeQuery(sql);
            if(!rs.next())
            {System.out.println("Vuota");}
            else
            {
                do{
                    name = rs.getString("NOME");
                    surname = rs.getString("COGNOME");
                }while(rs.next());}
        } catch (SQLException e) {
            System.out.println("Query error");
        }
        try {
            connection.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }

         if(connected)
                return "Connessione riuscita";
            else return "Connessione non riuscita";
}
    @Override
    protected void onPostExecute(String result) 
    {   myProgress.dismiss();
        if(result.equals("Connessione riuscita"))
            {Toast.makeText(MainActivity.this, result,    Toast.LENGTH_SHORT).show();
            nome1.setText(name);
            cognome1.setText(surname);}

            else 
                Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
    }
}
public void connectToDB(View view)
{
     ConnectAsync task = new ConnectAsync();
     task.execute();}
      @Override
      public void onClick(View v) {
      connectToDB(v);
      }
 }

让我问一个愚蠢的问题,你的手机连接到你的wifi吗?是的,他们共享相同的wifi。我唯一的疑问是我插在家里的wifi信号扩展器,但我不认为它会导致这种问题。只要它们都在同一个网络(wifi)上,你应该能够从手机连接到本地机器,反之亦然。如果不确定,请关闭移动服务并启用wifi访问互联网,这将回答您的扩展器问题。注意,如果它在模拟器上工作,而不是在设备上工作,请不要先发布代码问题。相反,请验证设备是否可以与本地网络联系。然后,如果测试正常,您的程序可能有问题。通过编写一个非常简单的程序连接到本地机器上运行的Web服务器(或服务)。Rmember,验证您的目标是解决问题-因此,首先,验证问题是什么。(提示:可能不是您的程序已经在本地机器的仿真器上运行失败)
 ....

 [mysqld]
 bind-address= *
 # skip-networking
 ...
 ...
 wait_timeout = 30
 interactive_timeout = 30
 connect_timeout = 30