2 Stimmen

Android-Transaktion oder Auslöser?

Ich arbeite an einer Kraftstoffanwendung, die auf Android 1.6 und höher laufen soll. Die gebündelte SQLite auf v1.6 nicht tun, Fremdschlüssel, so musste ich es manuell zu behandeln. Bislang habe ich dies mit einer Android-Transaktion getan:

    public static long addFuelUp(String registrationNumber, String date)
{
    SQLiteDatabase db = uKMpgData.getReadableDatabase();
    long result = -1;
    ContentValues values = new ContentValues();
    Cursor vehicleCursor = VehicleDataProvider.getVehicle(registrationNumber);

    if(vehicleCursor.moveToNext())
    {
        Cursor fuelUpsCursor = getFuelUps(registrationNumber, date);
        if(!fuelUpsCursor.moveToNext())
        {
            db.beginTransaction();
            try
            {
                    values.put(REGISTRATION_NO_COLUMN, registrationNumber.replace(" ", ""));
                    values.put(DATE_TIME_COLUMN, date);
                    result = db.insertOrThrow(FUEL_USE_TABLE_NAME, null, values);
                    db.setTransactionSuccessful();
            }
            catch(SQLException e)
            {
                Log.d("addFuelUp", e.getMessage());
            }
            finally
            {
                db.endTransaction();
                vehicleCursor.close();
                fuelUpsCursor.close();
            }
        }
    }
    return result;
}

D.h. Kraftstoffdaten können nur eingegeben werden, wenn ein entsprechendes Fahrzeugkennzeichen in der Datenbank vorhanden ist.

Meine Frage ist, ob es einen besseren Weg gibt, dies zu tun? Ich bin kein Datenbankexperte, aber ich weiß, dass man Trigger einrichten kann, um Regeln durchzusetzen - sind Trigger besser geeignet, um Constraints zu handhaben?

Zum Wohl, Barry

0voto

Michael Smith Punkte 717

Auslöser wären eine gute Lösung für dieses Problem.

Es gibt sogar eine automatisierte Möglichkeit, Auslöser für die Simulation von Fremdschlüsseln zu erzeugen. SQLite für PC bietet ein Dienstprogramm namens "genfkey", das eine bestehende Datenbank mit Fremdschlüsseln untersuchen und die entsprechenden Trigger ausgeben kann.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X