8

接続しようとしましmysql databaseたが失敗し、このエラーが表示されます

Communications link failure Last packet sent to the server was 1 ms ago

これは私のコードですか?誰でも私を助けてください

package android_programmers_guide.testconnection;


import java.sql.Connection;
import java.sql.DriverManager;

import android.os.Bundle;
import android.app.Activity;
import android.graphics.Color;
import android.view.Menu;
import android.widget.EditText;

public class TestConnection extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_test_connection);



           Connection conn = null;
           String url = "jdbc:mysql://127.0.0.1:3306/test";
           String driver = "com.mysql.jdbc.Driver";
           String userName = "root"; 
           String password = "root";


           try {
           Class.forName(driver).newInstance();
           conn = DriverManager.getConnection(url,userName,password);


           EditText editText=(EditText) findViewById(R.id.editText1);


           editText.setBackgroundColor(Color.GREEN);
           editText.setText("Connected to the database");

           conn.close();

           editText.setBackgroundColor(Color.BLUE);
           editText.setText("Disconnected from database");


           } catch (Exception e) {
           e.printStackTrace();
           }



    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.activity_test_connection, menu);
        return true;
    }

}
4

2 に答える 2

0

Androidアプリケーションは、同じシステム内のmysqlと通信できません。なぜなら、Androidアプリケーションを実行すると、エミュレーター内で実行されるからです。エミュレーターは 、Androidデバイスのような仮想モバイルデバイスです。エミュレータ自体にはIPアドレスがあります。したがって、アプリケーションによると、IP 127.0.0.1はエミュレーターのIPであるため、Androidアプリケーションはエミュレーターにあるmysqlと通信しようとします。ご存知のように、エミュレーターにはmysqlを含めることができず、通信は失敗します。SQLiteを使用できますデータストア用。Androidアプリケーションをmysqlと通信させたい場合は、 mysqlを別のシステムにインストールし、そのシステムのIPを指定する必要があります。次のようにコードを変更します。

String url = "jdbc:mysql://192.168.1.102:3306/test";

ここで、192.168.1.1022番目のシステムのIPについて説明しました。また、試す前に、これらのシステムを物理的に接続することを忘れないでください。

追加の知識について:-mysqlとandroidアプリケーションの直接通信は適切な方法ではありません。mysqlと通信するWebアプリケーションを作成します。その中にWebサービスを追加して、データをmysqlに保存します。androidアプリケーションで、このWebサービスを介してWebアプリケーションと通信するWebレイヤーを追加します。xmlまたはJSONを使用して、Webサービスを介してandroidアプリケーションからWebアプリケーションにデータを転送できます。Webアプリケーションは、データをmysqlに保存する必要があります。 androidアプリケーションのWebサービス呼び出しによって受信されます。

于 2012-12-04T10:25:54.027 に答える