3

I am trying to send data from android application to localhost MySQL database. I have created application in JAVA and it works fine. But the same code doesn't work in android. What is the issue. Below is the code for the android.

public class MainActivity extends Activity{

private Connection conn = null;  
private String url = "jdbc:mysql://localhost:3306/";
private String dbName = "testDB";
private String driver = "com.mysql.jdbc.Driver";  
private String userName = "root"; 
private String password = "";   
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main); 
try {
        Class.forName(driver).newInstance();
        conn = DriverManager.getConnection(url+dbName,userName,password);
        System.out.println("Connected to the database");
        Statement stmt = conn.createStatement();
        String sql = "INSERT INTO test " +
                "VALUES ('XYZ')";
        stmt.executeUpdate(sql); 

        conn.close();
        System.out.println("Disconnected from database");
    } catch (Exception e) {
        e.printStackTrace();
    }


}

I am getting error as:

04-01 12:52:31.114: W/System.err(910): java.sql.SQLException: Unable to connect to any hosts due to exception: java.net.SocketException: java.net.ConnectException: localhost/127.0.0.1:3306 - Connection refused
04-01 12:52:31.114: W/System.err(910): ** BEGIN NESTED EXCEPTION ** 
04-01 12:52:31.114: W/System.err(910): java.net.SocketException
04-01 12:52:31.114: W/System.err(910): MESSAGE: java.net.ConnectException: localhost/127.0.0.1:3306 - Connection refused
04-01 12:52:31.114: W/System.err(910): STACKTRACE:
04-01 12:52:31.124: W/System.err(910): java.net.SocketException: java.net.ConnectException: localhost/127.0.0.1:3306 - Connection refused
04-01 12:52:31.124: W/System.err(910):  at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:143)
04-01 12:52:31.124: W/System.err(910):  at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:225)
04-01 12:52:31.124: W/System.err(910):  at com.mysql.jdbc.Connection.createNewIO(Connection.java:1805)
04-01 12:52:31.124: W/System.err(910):  at com.mysql.jdbc.Connection.<init>(Connection.java:452)
04-01 12:52:31.124: W/System.err(910):  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:411)
04-01 12:52:31.124: W/System.err(910):  at java.sql.DriverManager.getConnection(DriverManager.java:191)
04-01 12:52:31.124: W/System.err(910):  at java.sql.DriverManager.getConnection(DriverManager.java:226)
04-01 12:52:31.124: W/System.err(910):  at com.example.getip.MainActivity.onCreate(MainActivity.java:138)
04-01 12:52:31.124: W/System.err(910):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-01 12:52:31.124: W/System.err(910):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
04-01 12:52:31.124: W/System.err(910):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-01 12:52:31.124: W/System.err(910):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-01 12:52:31.124: W/System.err(910):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-01 12:52:31.124: W/System.err(910):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-01 12:52:31.124: W/System.err(910):  at android.os.Looper.loop(Looper.java:123)
04-01 12:52:31.124: W/System.err(910):  at android.app.ActivityThread.main(ActivityThread.java:4627)
04-01 12:52:31.124: W/System.err(910):  at java.lang.reflect.Method.invokeNative(Native Method)
04-01 12:52:31.124: W/System.err(910):  at java.lang.reflect.Method.invoke(Method.java:521)
04-01 12:52:31.134: W/System.err(910):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-01 12:52:31.134: W/System.err(910):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-01 12:52:31.134: W/System.err(910):  at dalvik.system.NativeStart.main(Native Method)
04-01 12:52:31.134: W/System.err(910): ** END NESTED EXCEPTION **
04-01 12:52:31.144: W/System.err(910):  at com.mysql.jdbc.Connection.createNewIO(Connection.java:1875)
04-01 12:52:31.144: W/System.err(910):  at com.mysql.jdbc.Connection.<init>(Connection.java:452)
04-01 12:52:31.144: W/System.err(910):  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:411)
04-01 12:52:31.156: W/System.err(910):  at java.sql.DriverManager.getConnection(DriverManager.java:191)
04-01 12:52:31.156: W/System.err(910):  at java.sql.DriverManager.getConnection(DriverManager.java:226)
04-01 12:52:31.156: W/System.err(910):  at com.example.getip.MainActivity.onCreate(MainActivity.java:138)
04-01 12:52:31.156: W/System.err(910):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
04-01 12:52:31.156: W/System.err(910):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
04-01 12:52:31.156: W/System.err(910):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
04-01 12:52:31.156: W/System.err(910):  at android.app.ActivityThread.access$2300(ActivityThread.java:125)
04-01 12:52:31.156: W/System.err(910):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
04-01 12:52:31.156: W/System.err(910):  at android.os.Handler.dispatchMessage(Handler.java:99)
04-01 12:52:31.156: W/System.err(910):  at android.os.Looper.loop(Looper.java:123)
04-01 12:52:31.156: W/System.err(910):  at android.app.ActivityThread.main(ActivityThread.java:4627)
04-01 12:52:31.156: W/System.err(910):  at java.lang.reflect.Method.invokeNative(Native Method)
04-01 12:52:31.164: W/System.err(910):  at java.lang.reflect.Method.invoke(Method.java:521)
04-01 12:52:31.164: W/System.err(910):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
04-01 12:52:31.164: W/System.err(910):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
04-01 12:52:31.164: W/System.err(910):  at dalvik.system.NativeStart.main(Native Method)
sachi
  • 2,122
  • 7
  • 30
  • 46
  • is your device/emulator and your database on the same network – Abhishek Nandi Apr 01 '13 at 07:35
  • jdbc:mysql://localhost:3306/: here localhost means system on which program is running in ur case it is android device, u need to give ip of system on which mysql is installed – Chanchal Shelar Apr 01 '13 at 07:40
  • @Atrix1987 i am trying in emulator. – sachi Apr 01 '13 at 07:51
  • @ChanchalShelar can i give the ip like this jdbc:mysql://xx.xx.xx.xx:3306/: – sachi Apr 01 '13 at 07:52
  • @sachi yes, but as u said ur trying in emulator, is it on same system as Mysql? – Chanchal Shelar Apr 01 '13 at 07:53
  • @ChanchalShelar yes. Both are in same machine. please help me. I am stuck here. – sachi Apr 01 '13 at 07:55
  • @sachi k, relax, allow me 15 mins.. will try on my system and will be back – Chanchal Shelar Apr 01 '13 at 07:56
  • @sachi meanwhile check this http://stackoverflow.com/questions/4810116/android-mysql-using-com-mysql-jdbc-driver and http://stackoverflow.com/questions/12233145/connecting-to-mysql-from-android-with-jdbc – Chanchal Shelar Apr 01 '13 at 07:58
  • @ChanchalShelar ok. waiting for your response. – sachi Apr 01 '13 at 08:03
  • @ChanchalShelar hi i solved that in emulator using your links. I need to specify url like jdbc:mysql://10.0.2.2:3306/dbname. Now can i use my url like this using my device jdbc:mysql://xx.xx.xx.xx:3306/dbname or do i need to make any changes. – sachi Apr 01 '13 at 08:09
  • @sachi try it, possibly will work else check ip on mysql system using 'ipconfig' adn add that ip, as ip ur using is local ip for system – Chanchal Shelar Apr 01 '13 at 08:12
  • let us [continue this discussion in chat](http://chat.stackoverflow.com/rooms/27311/discussion-between-chanchal-shelar-and-sachi) – Chanchal Shelar Apr 01 '13 at 08:25

1 Answers1

0

I solved by replacing localhost with 10.0.2.2

sachi
  • 2,122
  • 7
  • 30
  • 46