[JAVA] J'ai essayé d'utiliser une connexion à une base de données dans le développement Android

introduction

Bonjour. Je suis Wataku, un programmeur côté serveur qui étudie la programmation dans une certaine école. : détendu: Cette fois, j'aimerais développer Android au lieu de la programmation WEB.

Personne cible

Procédure d'utilisation

(1) Préparez une classe d'assistance DB. (2) Obtenez un objet de connexion de base de données (** objet SQLiteDatabase **) de la classe d'assistance dans l'activité. (3) Exécutez SQL à l'aide de l'objet de connexion DB.

Comment créer une classe d'assistance DB

Créer en ** héritant ** de la ** classe SQLiteOpenHelper **. A ce moment, trois méthodes sont mises en œuvre. ⒈ Constructeur ⒉onCreate() ⒊onUpgrade()

⒈ Constructeur

Créez un constructeur et écrivez * souper (4 arguments) * dedans.


Argument 1

le contexte


Argument 2


Argument 3


Argument 4

Exemple de classe d'assistance DB

DatabaseHelper.java


import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseHelper extends SQLiteOpenHelper {
    private static final String DATABASE_NAME = "Nom de la base de données";
    private static final int DATABASE_VERSION = 1;

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, DATABASE_VERSION);
    }

    @Override
    public void onCreate(SQLiteDatabase db ) {
        StringBuffer sb = new StringBuffer();
        sb.append("CREATE TABLE nom de la table(");
        sb.append("_id INTEGER PRIMARY KEY AUTOINCREMENT, ");
        sb.append("content TEXT, ");
        sb.append(");");
        String sql = sb.toString();

        db.execSQL(sql);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

    }
}

Accès aux données

Procédure de base

① Génération d'objet d'aide (2) Obtenez un objet de connexion de base de données de l'assistant. ③ Traitement des données ④ Libérer l'objet de connexion DB

〜〜〜〜Activity.java


① DatabaseHelper helper = new DatabaseHelper(le contexte);
② SQLiteDatabase db = helper.getWritableDatabase();
try {

③    //Traitement DB

} catch(Exception ex) {

    Log.e("MemoPad", ex.toString());

} finally {

④    db.close();

}

Mettre à jour le système (INSERT, UPDATE, DELETE)

① Générer une chaîne de caractères SQL

② Obtenir un objet instruction

SQLiteStatement stmt = db.compileStatement("Chaîne SQL");

③ Reliure variable

stmt.type de données de liaison(?? Commande,valeur);

④ Exécuter SQL

stmt.executeInsert();
stmt.executeUpdateDelete();

Système de référence (SELECT)

① Générer une chaîne de caractères SQL

② Exécuter SQL

 Cursor cursor = db.rawQuery("Chaîne SQL", null);

③ Curseur de boucle

while (cursor.moveToFirst()) {}

④ Obtenez les données de chaque ligne

variable int= cursor.getColumnIndex("colonne");
           
Colonne de chaîne= cursor.obtenir le type de données de la colonne(variable);

Exemple d'accès aux données

DataAccess.java



import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteStatement;

import java.sql.Timestamp;

public class DataAccess {
    public static Memo findByPK(SQLiteDatabase db, int id) {
        String sql = "SELECT _id, title, content, update_at FROM memos WHERE _id = " + id;
        Cursor cursor = db.rawQuery(sql, null);
        Memo result = null;
        if (cursor.moveToFirst()) {
            int idxTitle = cursor.getColumnIndex("title");
            int idxContent = cursor.getColumnIndex("content");
            int idxUpdateAt = cursor.getColumnIndex("update_at");
            String title = cursor.getString(idxTitle);
            String content = cursor.getString(idxContent);
            String updateAtStr = cursor.getString(idxUpdateAt);

            Timestamp updateAt = Timestamp.valueOf(updateAtStr);

             /*
             *Setter
             */
            result = new Memo();
            result.setId(id);
            result.setTitle(title);
            result.setContent(content);
            result.setUpdateAt(updateAt);

        }
        return result;
    }

    public static int update(SQLiteDatabase db, int id, String title, String content) {
        String sql = "UPDATE memos SET title = ?, content = ?, update_at = datetime('now') WHERE _id = ?";
        SQLiteStatement stmt = db.compileStatement(sql);
        stmt.bindString(1, title);
        stmt.bindString(2, content);
        stmt.bindLong(3, id);
        int result = stmt.executeUpdateDelete();
        return result;
    }

    public static long insert(SQLiteDatabase db, String title, String content) {
        String sql = "INSERT INTO memos (title, content, update_at) VALUES (?, ?, datetime('now'))";
        SQLiteStatement stmt = db.compileStatement(sql);
        stmt.bindString(1, title);
        stmt.bindString(2, content);
        long id = stmt.executeInsert();
        return id;
    }

    public static int delete(SQLiteDatabase db, int id) {
        String sql = "DELETE FROM memos WHERE _id = ?";
        SQLiteStatement stmt = db.compileStatement(sql);
        stmt.bindLong(1, id);
        int result = stmt.executeUpdateDelete();
        return result;
    }
}
Lors de l'adoption de MVC et de la description du traitement DB comme modèle dans une autre classe (3) Faire du traitement des données une méthode.
À ce moment-là, en rendant ces méthodes «statiques», il n'est pas nécessaire de créer une nouvelle classe DAO, ce qui économise de la mémoire.

c'est tout. Si vous avez des suggestions telles que quelque chose qui ne va pas, veuillez nous contacter. Merci d'avoir lu jusqu'au bout.

Recommended Posts

J'ai essayé d'utiliser une connexion à une base de données dans le développement Android
J'ai essayé d'utiliser JWT en Java
[Android] J'ai essayé d'utiliser la disposition du coordinateur.
J'ai essayé d'utiliser Dapr en Java pour faciliter le développement de microservices
J'ai essayé d'utiliser l'API Elasticsearch en Java
J'ai essayé un problème de calendrier avec Ruby
J'ai essayé de créer une application cartographique simple dans Android Studio
J'ai essayé d'incorporer une formule dans Javadoc
J'ai essayé de créer une simple application Android de reconnaissance faciale en utilisant OpenCV
J'ai essayé de créer une application de conversation en Java à l'aide de l'IA «A3RT»
[Pour les débutants] J'ai essayé d'utiliser DBUnit avec Eclipse
[Pour les débutants] J'ai essayé d'utiliser JUnit 5 avec Eclipse
[Android / Java] Exploitez une base de données locale dans la salle
[Android] J'ai quitté SQLite et essayé d'utiliser Realm
J'ai essayé d'implémenter un serveur en utilisant Netty
J'ai essayé d'utiliser Gson
J'ai essayé d'utiliser TestNG
J'ai essayé d'utiliser Galasa
J'ai essayé de créer un exemple de programme en utilisant le problème du spécialiste des bases de données dans la conception pilotée par domaine
[Java] J'ai essayé de me connecter en utilisant le pool de connexion avec Servlet (tomcat) & MySQL & Java
J'ai un symbole de résolution impossible dans Android Studio
J'ai essayé de créer une compétence Clova en Java
J'ai essayé de créer une fonction de connexion avec Java
J'ai essayé d'utiliser Log4j2 sur un serveur Java EE
J'ai essayé d'utiliser l'instruction Extended for en Java
J'ai essayé de gratter un graphique boursier en utilisant Java (Jsoup)
Je souhaite établir une connexion lorsqu'une base de données est créée à l'aide de Spring et MyBatis
J'ai trébuché lorsque j'ai essayé d'utiliser neo4j dans l'environnement jenv, alors prenez note
J'ai essayé d'utiliser azure cloud-init
J'ai essayé d'utiliser Apache Wicket
Erreur de connexion à la base de données Spring
J'ai essayé d'utiliser Java REPL
J'ai essayé la métaprogrammation avec Java
J'ai essayé de créer un environnement de développement java8 avec Chocolatey
J'ai essayé d'utiliser le référentiel GitHub comme serveur de bibliothèque
J'ai essayé d'ajouter une ligne de séparation à TabLayout sur Android
Je veux trouver un chemin relatif dans une situation où Path est utilisé
J'ai essayé de convertir une chaîne de caractères en un type LocalDate en Java
J'ai essayé d'implémenter une application web pleine de bugs avec Kotlin
J'ai créé un client RESAS-API en Java
J'ai écrit un analyseur C (comme) en utilisant PEG dans Ruby
J'ai essayé de créer un environnement de développement padrino avec Docker
[Android] [Bibliothèque] J'ai essayé d'utiliser une bibliothèque d'animations appelée "Before After animation".
J'ai essayé d'utiliser la bibliothèque CameraX avec Android Java Fragment
J'ai essayé d'utiliser anakia + Jing maintenant
[Android] Créer un calendrier à l'aide de GridView
Créez un classement temporel clair avec la base de données en temps réel de Firebase (application Android)
J'ai essayé d'illuminer le sapin de Noël dans un jeu de la vie
J'ai essayé d'utiliser Spring + Mybatis + DbUnit
J'ai créé un PDF avec Java.
J'ai essayé d'utiliser JOOQ avec Gradle
J'ai essayé un petit docker de digdag.
J'ai essayé d'écrire du code comme une déclaration de type en Ruby
Créer une base de données dans un environnement de production
J'ai essayé de créer un environnement de développement Spring MVC sur Mac
[Unity] J'ai essayé de créer un plug-in natif UniNWPathMonitor en utilisant NWPathMonitor
J'ai essayé de mettre Domino11 dans CentOS7
Créer un environnement de test de navigateur à l'aide de Capybara dans l'environnement de développement Docker