Maison >base de données >tutoriel mysql >Android peut-il utiliser MySQL ?

Android peut-il utiliser MySQL ?

藏色散人
藏色散人original
2019-05-07 17:11:185718parcourir

Android peut utiliser la base de données mysql. Il existe deux manières pour Android de se connecter à la base de données, à savoir : 1. En se connectant au serveur, puis le serveur lit la base de données pour réaliser l'ajout, la suppression, la modification. et requête de données ; 2. Chargez le package jar externe et connectez-vous directement à la base de données.

Android peut-il utiliser MySQL ?

Android peut utiliser la base de données MySQL. Il existe deux façons pour Android de se connecter à la base de données.

La première méthode consiste à se connecter au serveur, puis le serveur lit la base de données pour ajouter, supprimer, modifier et vérifier les données. C'est également notre méthode courante.

La deuxième méthode consiste pour Android à se connecter directement à la base de données. Cette méthode consomme beaucoup de mémoire du téléphone mobile et est facilement décompilée, ce qui entraîne des risques de sécurité, elle n'est donc pas recommandée dans les projets réels.

1. Chargez le package jar externe

Si vous souhaitez utiliser jdbc dans le projet Android, vous devez importer le package jar externe de jdbc, car il n'y a pas d'API jdbc dans le jdk de Java. .J'utilise Le package jar est le package mysql-connector-java-5.1.18-bin.jar. Il existe un package mysql-connector-java-5.1.18-bin.jar sur Internet. J'ai trouvé qu'il était incompatible, alors je l'ai téléchargé. Pour les versions plus récentes, le package jar peut être téléchargé depuis le site officiel ou depuis Baidu. Il en existe de nombreux téléchargés par les prédécesseurs.

2. Comment importer le package jar

Méthode 1 :

Vous pouvez directement ajouter l'instruction suivante au fichier build.gradle du projet pour importer le

compile files('libs/mysql-connector-java-5.1.18-bin.jar')

méthode deux : téléchargez le package jar et copiez-le dans le répertoire libs du projet, puis cliquez avec le bouton droit sur le package jar copié Ajouter en tant que libs

Établissez une connexion à la base de données

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_jdbc);
    new Thread(runnable).start();
}
Handler myHandler=new Handler(){
    public void handleMessage(Message msg) {
        // TODO Auto-generated method stub
        super.handleMessage(msg);
        Bundle data=new Bundle();
        data=msg.getData();
        //System.out.println("id:"+data.get("id").toString());    //输出第n行,列名为“id”的值
        Log.e("TAG","id:"+data.get("id").toString());
       TextView tv= (TextView) findViewById(R.id.jdbc);
        //System.out.println("content:"+data.get("content").toString());
    }
};
Runnable runnable=new Runnable() {
    private Connection con = null;
    @Override
    public void run() {
        // TODO Auto-generated method stub
        try {
            Class.forName("com.mysql.jdbc.Driver");
            //引用代码此处需要修改,address为数据IP,Port为端口号,DBName为数据名称,UserName为数据库登录账户,Password为数据库登录密码
            con =
                    //DriverManager.getConnection("jdbc:mysql://192.168.1.202:3306/b2b", "root", "");
            DriverManager.getConnection("jdbc:mysql://http://192.168.1.100/phpmyadmin/index.php:8086/b2b",
                    UserName,Password);
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        try {
            testConnection(con);    //测试数据库连接
        } catch (java.sql.SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
    public void testConnection(Connection con1) throws java.sql.SQLException {
        try {
            String sql = "select * from ecs_users";        //查询表名为“oner_alarm”的所有内容
            Statement stmt = con1.createStatement();        //创建Statement
            ResultSet rs = stmt.executeQuery(sql);          //ResultSet类似Cursor
            //<code>ResultSet</code>最初指向第一行
            Bundle bundle=new Bundle();
            while (rs.next()) {
                bundle.clear();
                bundle.putString("id",rs.getString("userid"));
                //bundle.putString("content",rs.getString("content"));
                Message msg=new Message();
                msg.setData(bundle);
                myHandler.sendMessage(msg);
            }
            rs.close();
            stmt.close();
        } catch (SQLException e) {
        } finally {
            if (con1 != null)
                try {
                    con1.close();
                } catch (SQLException e) {}
        }
    }
};
Remarque :

est dans Après Android 4.0, les opérations fastidieuses ne sont pas autorisées dans le thread principal (la connexion à la base de données est une opération qui prend du temps. Un nouveau thread doit être ouvert pour gérer ce temps). -opérations consommatrices. Lorsqu'il n'y a pas de nouveau thread, l'opération est toujours. Il suffit de quitter directement le programme et d'ouvrir un nouveau thread pour le gérer directement, et il n'y aura aucun problème.

Bien sûr, la connexion à la base de données nécessite un réseau. N'oubliez pas d'ajouter les autorisations d'accès au réseau :

<uses-permission android:name=”android.permission.INTERNET”/>

4 Points de bug

1. doit être correct

2. Un nouveau fil de discussion doit être ouvert pour se connecter à la base de données

3. L'adresse IP de la base de données doit être pingable et l'adresse LAN n'est pas accessible par téléphone mobile

. 🎜>

4. Base de données Le serveur sur lequel vous vous trouvez est-il sur un pare-feu qui bloque l'accès

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn