Herstellen einer Verbindung zu MySQL von Android mit JDBC

Lesezeit: 5 Minuten

Herstellen einer Verbindung zu MySQL von Android mit JDBC
Manuraphie

Ich habe den folgenden Code zum Verbinden verwendet MySQL in localhost von Android. Es zeigt nur die Aktionen an, die im Catch-Abschnitt angegeben sind. Ich weiß nicht, ob es ein Verbindungsproblem ist oder nicht.

package com.test1;

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

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class Test1Activity extends Activity {
    /** Called when the activity is first created. */
    String str="new";
    static ResultSet rs;
    static PreparedStatement st;
    static Connection con;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final   TextView tv=(TextView)findViewById(R.id.user);

        try
        {
            Class.forName("com.mysql.jdbc.Driver");
              con=DriverManager.getConnection("jdbc:mysql://10.0.2.2:8080/example","root","");
            st=con.prepareStatement("select * from country where id=1");
            rs=st.executeQuery();
             while(rs.next())
             {
             str=rs.getString(2);


             }


            tv.setText(str);
            setContentView(tv);
        }
        catch(Exception e)
        {
            tv.setText(str);
        }
    }
}

Wenn dieser Code ausgeführt wird, zeigt er “neu” im Avd an.

java.lang.management.ManagementFactory.getThreadMXBean, referenced from method com.mysql.jdbc.MysqlIO.appendDeadlockStatusInformation
Could not find class 'javax.naming.StringRefAddr', referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.storeTo
Could not find method javax.naming.Reference.get, referenced from method com.mysql.jdbc.ConnectionPropertiesImpl$ConnectionProperty.initializeFrom

Kann jemand eine Lösung vorschlagen? Und danke im Voraus

Herstellen einer Verbindung zu MySQL von Android mit JDBC
Jack

Sie können von Android aus nicht nativ auf eine MySQL-DB zugreifen. BEARBEITEN: Eigentlich können Sie JDBC verwenden, aber es wird nicht empfohlen (oder funktioniert es möglicherweise nicht?) … siehe Android JDBC funktioniert nicht: ClassNotFoundException auf Treiber

Sehen

http://www.helloandroid.com/tutorials/connecting-mysql-database

http://www.basic4ppc.com/forum/basic4android-getting-started-tutorials/8339-connect-android-mysql-database-tutorial.html

Android kann keine direkte Verbindung zum Datenbankserver herstellen. Daher müssen wir einen einfachen Webdienst erstellen, der die Anfragen an die Datenbank weiterleitet und die Antwort zurückgibt.

http://codeoncloud.blogspot.com/2012/03/android-mysql-client.html

Für die meisten [good] Benutzer könnte dies in Ordnung sein. Aber stellen Sie sich vor, Sie bekommen einen Hacker, der sich Ihr Programm aneignet. Ich habe meine eigenen Anwendungen dekompiliert und es ist beängstigend, was ich gesehen habe. Was ist, wenn sie Ihren Benutzernamen / Ihr Passwort in Ihre Datenbank bekommen und Chaos anrichten? Schlecht.

  • danke für deine schnelle antwort jack. codeoncloud.blogspot.com/2012/03/android-mysql-client.html

    – Manuraphie

    2. September 2012 um 5:10 Uhr

  • Hai Jack, ich bekomme einige Zeilen in diesem Blog nicht, die sich hauptsächlich auf Ksop beziehen, private statische Endzeichenfolge SOAP_ACTION = “ws.retailer.com/customerData“; privater statischer finaler String METHOD_NAME = “customerData”; privater statischer finaler String NAMESPACE = “ws.retailer.com“; privater statischer finaler String URL = “175.157.234.156:8085/ForBlog/services/RetailerWS?wsdl“;

    – Manuraphie

    2. September 2012 um 5:35 Uhr

  • “Android kann sich nicht direkt mit dem Datenbankserver verbinden” das klingt wie ein Evangelium. Was fördern Sie eigentlich, einen Mittelsmann (SOAP, REST, Web Services und andere CORBA-Zombies)?

    – Tegiri Nenashi

    18. Februar 2014 um 1:49 Uhr

  • Ich weiß nicht, wie Sie dies als Antwort betrachten können. Sie empfehlen JDBC nicht, das native Treiber für Datenbanken unterstützt. Und dann unterstützen Sie keine Webdienste. Also sag mir, was soll diese “Antwort”?

    – JohnMerlino

    31. Mai 2014 um 3:37 Uhr

  • @JohnMerlino Er hat nicht nach einer Webdienstimplementierung gefragt, und ich werde hier keine vollständig codieren. Die Frage war “Von Android mit JDBC zu MySQL verbinden”. Ich habe recherchiert und Informationen präsentiert. Bitte verbessern / bearbeiten / erstellen Sie Ihre eigene Antwort, wenn Sie der Meinung sind, dass Sie es besser machen können.

    – Jack

    31. Mai 2014 um 17:48 Uhr


dieser Code läuft permanent!!! erstellt von diko (Türkei)

public void mysql() {

    try {
        Class.forName("com.mysql.jdbc.Driver");
    } catch (ClassNotFoundException e) {
        e.printStackTrace();

    }

    thrd1 = new Thread(new Runnable() {
        public void run() {
            while (!Thread.interrupted()) {
                try {
                    Thread.sleep(100);
                } catch (InterruptedException e1) {

                }
                if (con == null) {
                    try {
                        con = DriverManager.getConnection("jdbc:mysql://192.168.1.45:3306/deneme", "ali", "12345");

                    } catch (SQLException e) {
                        e.printStackTrace();
                        con = null;
                    }

                    if ((thrd2 != null) && (!thrd2.isAlive()))
                        thrd2.start();

                }
            }

        }
    });
    if ((thrd1 != null) && (!thrd1.isAlive())) thrd1.start();

    thrd2 = new Thread(new Runnable() {
        public void run() {
            while (!Thread.interrupted()) {

                if (con != null) {
                    try {
                     //   con = DriverManager.getConnection("jdbc:mysql://192.168.1.45:3306/deneme", "ali", "12345");
                        Statement st = con.createStatement();
                        String ali = "'fff'";
                        st.execute("INSERT INTO deneme (name) VALUES(" + ali + ")");
                      //  ResultSet rs = st.executeQuery("select * from deneme");
                      //  ResultSetMetaData rsmd = rs.getMetaData();
                      //  String result = new String();


                      //  while (rs.next()) {
                      //      result += rsmd.getColumnName(1) + ": " + rs.getInt(1) + "\n";
                     //       result += rsmd.getColumnName(2) + ": " + rs.getString(2) + "\n";


                     //   }

                    } catch (SQLException e) {
                        e.printStackTrace();
                        con = null;
                    }

                    try {
                        Thread.sleep(10);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                } else {
                    try {
                        Thread.sleep(300);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            }
        }

    });


}

  • Wenn Sie versuchen, vollständigen Code zu präsentieren, stellen Sie bitte sicher, dass er kompiliert wird

    – Zannith

    9. März 2018 um 22:51 Uhr

Wenn Sie Ihre Anwendung mit einem Server verbinden müssen, können Sie dies über PHP/MySQL und JSON tun http://www.androidhive.info/2012/05/how-to-connect-android-with-php-mysql/ .Mysql-Verbindungscode sollte sich in der AsynTask-Klasse befinden. Führen Sie es nicht im Hauptthread aus.

Möchten Sie Ihre Datenbank auf dem Handy halten? Verwenden Sie sqlite anstelle von mysql.

Wenn die Idee darin besteht, die Datenbank auf dem Server zu halten und vom Handy aus darauf zuzugreifen. Verwenden Sie einen Webservice, um Daten abzurufen/zu ändern.

Ein anderer Ansatz ist die Verwendung eines virtuellen JDBC-Treibers, der eine dreischichtige Architektur verwendet: Ihr JDBC-Code wird über HTTP an ein Remote-Servlet gesendet, das den JDBC-Code filtert (Konfiguration und Sicherheit), bevor er ihn an den MySql-JDBC-Treiber weiterleitet. Das Ergebnis wird Ihnen über HTTP zurückgesendet. Es gibt einige kostenlose Software, die diese Technik verwenden. Google einfach “Android JDBC-Treiber über HTTP”.

Herstellen einer Verbindung zu MySQL von Android mit JDBC
David Untama

versuchen Sie, in der Gradle-Datei die targetSdkVersion auf 8 zu ändern

targetSdkVersion 8

1645890190 501 Herstellen einer Verbindung zu MySQL von Android mit JDBC
Benutzer3252230

public void testDB() {
        TextView tv = (TextView) this.findViewById(R.id.tv_data);
        try {

            Class.forName("com.mysql.jdbc.Driver");

            // perfect

            // localhost

            /*
             * Connection con = DriverManager .getConnection(
             * "jdbc:mysql://192.168.1.5:3306/databasename?user=root&password=123"
             * );
             */

            // online testing

            Connection con = DriverManager
                    .getConnection("jdbc:mysql://173.5.128.104:3306/vokyak_heyou?user=viowryk_hiweser&password=123");

            String result = "Database connection success\n";
            Statement st = con.createStatement();

            ResultSet rs = st.executeQuery("select * from tablename ");
            ResultSetMetaData rsmd = rs.getMetaData();

            while (rs.next()) {

                result += rsmd.getColumnName(1) + ": " + rs.getString(1) + "\n";

            }
            tv.setText(result);
        } catch (Exception e) {
            e.printStackTrace();
            tv.setText(e.toString());
        }

    }

865480cookie-checkHerstellen einer Verbindung zu MySQL von Android mit JDBC

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy