[JAVA] Ich habe versucht, eine Datenbankverbindung in der Android-Entwicklung zu verwenden

Einführung

Hallo. Ich bin Wataku, ein serverseitiger Programmierer, der an einer bestimmten Schule Programmieren studiert. : entspannt: Dieses Mal möchte ich Android anstelle von WEB-Programmierung entwickeln.

Zielperson

Verwendungsverfahren

(1) Bereiten Sie eine DB-Hilfsklasse vor. (2) Rufen Sie ein DB-Verbindungsobjekt (** SQLiteDatabase-Objekt **) von der Hilfsklasse in der Aktivität ab. (3) Führen Sie SQL mit dem DB-Verbindungsobjekt aus.

So erstellen Sie eine DB-Hilfsklasse

Erstellen Sie durch ** Erben ** der ** SQLiteOpenHelper-Klasse **. Zu diesem Zeitpunkt sind drei Methoden implementiert. ⒈ Konstruktor ⒉onCreate() ⒊onUpgrade()

⒈ Konstruktor

Erstellen Sie einen Konstruktor und schreiben Sie * supper (4 Argumente) * hinein.


Argument 1

Kontext


Argument 2


Argument 3


Argument 4

Beispiel für eine DB-Hilfsklasse

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 = "Name der Datenbank";
    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("Tabellenname CREATE 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) {

    }
}

Datenzugriff

Grundlegende Vorgehensweise

① Hilfsobjektgenerierung (2) Holen Sie sich ein DB-Verbindungsobjekt vom Helfer. ③ Datenverarbeitung ④ Geben Sie das DB-Verbindungsobjekt frei

〜〜〜〜Activity.java


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

③    //DB-Verarbeitung

} catch(Exception ex) {

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

} finally {

④    db.close();

}

System aktualisieren (INSERT, UPDATE, DELETE)

① Generieren Sie eine SQL-Zeichenfolge

② Holen Sie sich ein Anweisungsobjekt

SQLiteStatement stmt = db.compileStatement("SQL-Zeichenfolge");

③ Variable Bindung

stmt.Datentyp binden(?? Auftrag,Wert);

④ SQL ausführen

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

Referenzsystem (SELECT)

① Generieren Sie eine SQL-Zeichenfolge

② SQL ausführen

 Cursor cursor = db.rawQuery("SQL-Zeichenfolge", null);

③ Schleifencursor

while (cursor.moveToFirst()) {}

④ Holen Sie sich die Daten jeder Zeile

int Variable= cursor.getColumnIndex("Säule");
           
String-Spalte= cursor.Spalten-Datentyp abrufen(Variable);

Beispiel für den Datenzugriff

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;
    }
}
Wenn Sie MVC übernehmen und die DB-Verarbeitung als Modell in einer anderen Klasse beschreiben (3) Machen Sie die Datenverarbeitung zu einer Methode.
Zu diesem Zeitpunkt ist es nicht erforderlich, die DAO-Klasse neu zu erstellen, da diese Methoden "statisch" sind, wodurch Speicherplatz gespart wird.

das ist alles. Wenn Sie Vorschläge wie etwas falsches haben, kontaktieren Sie uns bitte. Vielen Dank für das Lesen bis zum Ende.

Recommended Posts

Ich habe versucht, eine Datenbankverbindung in der Android-Entwicklung zu verwenden
Ich habe versucht, JWT in Java zu verwenden
[Android] Ich habe versucht, das Koordinatorlayout zu verwenden.
Ich habe versucht, Dapr in Java zu verwenden, um die Entwicklung von Mikroservices zu erleichtern
Ich habe versucht, die Elasticsearch-API in Java zu verwenden
Ich habe ein Kalenderproblem mit Ruby versucht
Ich habe versucht, eine einfache Karten-App in Android Studio zu erstellen
Ich habe versucht, eine Formel in Javadoc einzubetten
Ich habe versucht, eine einfache Gesichtserkennungs-Android-Anwendung mit OpenCV zu erstellen
Ich habe versucht, mit AI "A3RT" eine Talk-App in Java zu erstellen.
[Für Anfänger] Ich habe versucht, DBUnit mit Eclipse zu verwenden
[Für Anfänger] Ich habe versucht, JUnit 5 mit Eclipse zu verwenden
[Android / Java] Betreiben Sie eine lokale Datenbank in Room
[Android] Ich habe SQLite beendet und versucht, Realm zu verwenden
Ich habe versucht, einen Server mit Netty zu implementieren
Ich habe versucht, Gson zu benutzen
Ich habe versucht, TestNG zu verwenden
Ich habe versucht, Galasa zu benutzen
Ich habe versucht, ein Beispielprogramm mit dem Problem des Datenbankspezialisten für domänengesteuertes Design zu erstellen
[Java] Ich habe versucht, über den Verbindungspool eine Verbindung mit Servlet (Tomcat) & MySQL & Java herzustellen
Ich habe ein Symbol, das in Android Studio nicht aufgelöst werden kann
Ich habe versucht, eine Clova-Fähigkeit in Java zu erstellen
Ich habe versucht, eine Anmeldefunktion mit Java zu erstellen
Ich habe versucht, Log4j2 auf einem Java EE-Server zu verwenden
Ich habe versucht, die erweiterte for-Anweisung in Java zu verwenden
Ich habe versucht, ein Aktienchart mit Java (Jsoup) zu kratzen.
Ich möchte eine Verbindung herstellen, wenn eine Datenbank mit Spring und MyBatis erstellt wird
Ich bin gestolpert, als ich versucht habe, neo4j in der jenv-Umgebung zu verwenden. Machen Sie sich also eine Notiz
Ich habe versucht, Azure Cloud-Init zu verwenden
Ich habe versucht, Apache Wicket zu verwenden
Fehler in der Spring-Datenbankverbindung
Ich habe versucht, Java REPL zu verwenden
Ich habe versucht, Metaprogrammierung mit Java
Ich habe versucht, mit Chocolatey eine Java8-Entwicklungsumgebung zu erstellen
Ich habe versucht, das GitHub-Repository als Bibliotheksserver zu verwenden
Ich habe versucht, TabLayout unter Android eine Trennlinie hinzuzufügen
Ich möchte einen relativen Pfad in einer Situation finden, in der Pfad verwendet wird
Ich habe versucht, in Java von einer Zeichenfolge in einen LocalDate-Typ zu konvertieren
Ich habe versucht, eine Webanwendung voller Fehler mit Kotlin zu implementieren
Ich habe einen RESAS-API-Client in Java erstellt
Ich habe einen C-Parser (wie) mit PEG in Ruby geschrieben
Ich habe versucht, mit Docker eine Padrino-Entwicklungsumgebung zu erstellen
[Android] [Bibliothek] Ich habe versucht, eine Animationsbibliothek namens "Vorher Nachher Animation" zu verwenden.
Ich habe versucht, die CameraX-Bibliothek mit Android Java Fragment zu verwenden
Ich habe jetzt versucht, Anakia + Jing zu verwenden
[Android] Erstellen Sie einen Kalender mit GridView
Erstellen Sie ein klares Zeitranking mit der Echtzeitdatenbank von Firebase (Android-App)
Ich habe versucht, den Weihnachtsbaum in einem Lebensspiel zu beleuchten
Ich habe versucht, Spring + Mybatis + DbUnit zu verwenden
Ich habe ein PDF mit Java erstellt.
Ich habe versucht, JOOQ mit Gradle zu verwenden
Ich habe ein wenig digdags docker.run_options ausprobiert
Ich habe versucht, Code wie eine Typdeklaration in Ruby zu schreiben
Erstellen Sie eine Datenbank in einer Produktionsumgebung
Ich habe versucht, eine Spring MVC-Entwicklungsumgebung auf einem Mac zu erstellen
[Unity] Ich habe mit NWPathMonitor ein natives Plug-In UniNWPathMonitor erstellt
Ich habe versucht, Domino11 in CentOS7 zu integrieren
Erstellen Sie eine Browsertestumgebung mit Capybara in der Docker-Entwicklungsumgebung