Example usage for android.database.sqlite SQLiteStatement bindLong

List of usage examples for android.database.sqlite SQLiteStatement bindLong

Introduction

In this page you can find the example usage for android.database.sqlite SQLiteStatement bindLong.

Prototype

public void bindLong(int index, long value) 

Source Link

Document

Bind a long value to this statement.

Usage

From source file:org.kontalk.provider.UsersProvider.java

private void addResyncContact(SQLiteDatabase db, SQLiteStatement stm, SQLiteStatement onlineUpd,
        SQLiteStatement onlineIns, String number, String jid, String displayName, String lookupKey,
        Long contactId, boolean registered) {

    int i = 0;//from ww w.  j a  v  a2s .c  o m

    stm.clearBindings();
    stm.bindString(++i, number);
    stm.bindString(++i, jid);
    if (displayName != null)
        stm.bindString(++i, displayName);
    else
        stm.bindNull(++i);
    if (lookupKey != null)
        stm.bindString(++i, lookupKey);
    else
        stm.bindNull(++i);
    if (contactId != null)
        stm.bindLong(++i, contactId);
    else
        stm.bindNull(++i);
    stm.bindLong(++i, registered ? 1 : 0);
    stm.executeInsert();

    // update online entry
    i = 0;
    onlineUpd.clearBindings();
    onlineUpd.bindString(++i, number);
    if (displayName != null)
        onlineUpd.bindString(++i, displayName);
    else
        onlineUpd.bindNull(++i);
    if (lookupKey != null)
        onlineUpd.bindString(++i, lookupKey);
    else
        onlineUpd.bindNull(++i);
    if (contactId != null)
        onlineUpd.bindLong(++i, contactId);
    else
        onlineUpd.bindNull(++i);
    onlineUpd.bindString(++i, jid);
    int rows = executeUpdateDelete(db, onlineUpd);

    // no contact found, insert a new dummy one
    if (rows <= 0) {
        i = 0;
        onlineIns.clearBindings();
        onlineIns.bindString(++i, number);
        onlineIns.bindString(++i, jid);
        if (displayName != null)
            onlineIns.bindString(++i, displayName);
        else
            onlineIns.bindNull(++i);
        if (lookupKey != null)
            onlineIns.bindString(++i, lookupKey);
        else
            onlineIns.bindNull(++i);
        if (contactId != null)
            onlineIns.bindLong(++i, contactId);
        else
            onlineIns.bindNull(++i);
        onlineIns.bindLong(++i, registered ? 1 : 0);
        onlineIns.executeInsert();
    }
}

From source file:com.ichi2.anki.SyncClient.java

private void deleteMedia(JSONArray ids) {
    Log.i(AnkiDroidApp.TAG, "deleteMedia");
    AnkiDb ankiDB = AnkiDatabaseManager.getDatabase(mDeck.getDeckPath());

    String idsString = Utils.ids2str(ids);

    // Get filenames
    ArrayList<String> files = ankiDB.queryColumn(String.class,
            "SELECT filename FROM media WHERE id IN " + idsString, 0);

    // Note the media to delete (Insert the media to delete into mediaDeleted)
    double now = Utils.now();
    String sqlInsert = "INSERT INTO mediaDeleted SELECT id, " + String.format(Utils.ENGLISH_LOCALE, "%f", now)
            + " FROM media WHERE media.id = ?";
    SQLiteStatement statement = ankiDB.getDatabase().compileStatement(sqlInsert);
    int len = ids.length();
    for (int i = 0; i < len; i++) {
        try {/*w  w  w  .  j  av  a2s .  co m*/
            Log.i(AnkiDroidApp.TAG, "Inserting media " + ids.getLong(i) + " into mediaDeleted");
            statement.bindLong(1, ids.getLong(i));
            statement.executeInsert();
        } catch (JSONException e) {
            Log.i(AnkiDroidApp.TAG, "JSONException = " + e.getMessage());
        }
    }
    statement.close();

    // Delete media
    Log.i(AnkiDroidApp.TAG, "Deleting media in = " + idsString);
    ankiDB.getDatabase().execSQL("DELETE FROM media WHERE id IN " + idsString);
}

From source file:com.ichi2.anki.SyncClient.java

private void updateFacts(JSONObject factsDict) {
    try {/*from w ww  .java  2  s .c o m*/
        AnkiDb ankiDB = AnkiDatabaseManager.getDatabase(mDeck.getDeckPath());
        JSONArray facts = factsDict.getJSONArray("facts");
        int lenFacts = facts.length();

        if (lenFacts > 0) {
            JSONArray fields = factsDict.getJSONArray("fields");
            int lenFields = fields.length();

            // Grab fact ids
            // They will be used later to recalculate the count of facts and to delete them from DB
            ArrayList<String> factIds = new ArrayList<String>();
            for (int i = 0; i < lenFacts; i++) {
                factIds.add(facts.getJSONArray(i).getString(0));
            }
            String factIdsString = Utils.ids2str(factIds);

            // Recalculate fact count
            mDeck.setFactCount((int) (mDeck.getFactCount() + (lenFacts
                    - ankiDB.queryScalar("SELECT COUNT(*) FROM facts WHERE id IN " + factIdsString))));

            // Update facts
            String sqlFact = "INSERT OR REPLACE INTO facts (id, modelId, created, modified, tags, spaceUntil, lastCardId)"
                    + " VALUES(?,?,?,?,?,?,?)";
            SQLiteStatement statement = ankiDB.getDatabase().compileStatement(sqlFact);
            for (int i = 0; i < lenFacts; i++) {
                JSONArray fact = facts.getJSONArray(i);

                // id
                statement.bindLong(1, fact.getLong(0));
                // modelId
                statement.bindLong(2, fact.getLong(1));
                // created
                statement.bindDouble(3, fact.getDouble(2));
                // modified
                statement.bindDouble(4, fact.getDouble(3));
                // tags
                statement.bindString(5, fact.getString(4));
                // spaceUntil
                statement.bindDouble(6, fact.getDouble(5));
                // lastCardId
                if (!fact.isNull(6)) {
                    statement.bindLong(7, fact.getLong(6));
                } else {
                    statement.bindNull(7);
                }

                statement.execute();
            }
            statement.close();

            // Update fields (and delete first the local ones, since ids may have changed)
            ankiDB.getDatabase().execSQL("DELETE FROM fields WHERE factId IN " + factIdsString);

            String sqlFields = "INSERT INTO fields (id, factId, fieldModelId, ordinal, value) VALUES(?,?,?,?,?)";
            statement = ankiDB.getDatabase().compileStatement(sqlFields);
            for (int i = 0; i < lenFields; i++) {
                JSONArray field = fields.getJSONArray(i);

                // id
                statement.bindLong(1, field.getLong(0));
                // factId
                statement.bindLong(2, field.getLong(1));
                // fieldModelId
                statement.bindLong(3, field.getLong(2));
                // ordinal
                statement.bindString(4, field.getString(3));
                // value
                statement.bindString(5, field.getString(4));

                statement.execute();
            }
            statement.close();

            // Delete inserted facts from deleted
            ankiDB.getDatabase().execSQL("DELETE FROM factsDeleted WHERE factId IN " + factIdsString);
        }
    } catch (JSONException e) {
        Log.i(AnkiDroidApp.TAG, "JSONException = " + e.getMessage());
    }
}

From source file:com.ichi2.anki.SyncClient.java

private void updateSources(JSONArray sources) {
    String sql = "INSERT OR REPLACE INTO sources VALUES(?,?,?,?,?)";
    SQLiteStatement statement = AnkiDatabaseManager.getDatabase(mDeck.getDeckPath()).getDatabase()
            .compileStatement(sql);/*  www. ja  v a  2 s .c o  m*/
    int len = sources.length();
    for (int i = 0; i < len; i++) {
        try {
            JSONArray source = sources.getJSONArray(i);
            statement.bindLong(1, source.getLong(0));
            statement.bindString(2, source.getString(1));
            statement.bindDouble(3, source.getDouble(2));
            statement.bindDouble(4, source.getDouble(3));
            statement.bindString(5, source.getString(4));
            statement.execute();
        } catch (JSONException e) {
            Log.i(AnkiDroidApp.TAG, "JSONException = " + e.getMessage());
        }
    }
    statement.close();
}

From source file:com.ichi2.anki.SyncClient.java

private void updateCards(JSONArray cards) {
    int len = cards.length();
    if (len > 0) {
        AnkiDb ankiDB = AnkiDatabaseManager.getDatabase(mDeck.getDeckPath());
        ArrayList<String> ids = new ArrayList<String>();
        for (int i = 0; i < len; i++) {
            try {
                ids.add(cards.getJSONArray(i).getString(0));
            } catch (JSONException e) {
                Log.i(AnkiDroidApp.TAG, "JSONException = " + e.getMessage());
            }/*  w  w  w . j  a  va  2 s . c o m*/
        }
        String idsString = Utils.ids2str(ids);

        mDeck.setCardCount((int) (mDeck.getCardCount()
                + (len - ankiDB.queryScalar("SELECT COUNT(*) FROM cards WHERE id IN " + idsString))));

        String sql = "INSERT OR REPLACE INTO cards (id, factId, cardModelId, created, modified, tags, ordinal, "
                + "priority, interval, lastInterval, due, lastDue, factor, firstAnswered, reps, successive, "
                + "averageTime, reviewTime, youngEase0, youngEase1, youngEase2, youngEase3, youngEase4, "
                + "matureEase0, matureEase1, matureEase2, matureEase3, matureEase4, yesCount, noCount, question, "
                + "answer, lastFactor, spaceUntil, type, combinedDue, relativeDelay, isDue) "
                + "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?, 0, 0)";
        SQLiteStatement statement = ankiDB.getDatabase().compileStatement(sql);
        for (int i = 0; i < len; i++) {
            try {
                JSONArray card = cards.getJSONArray(i);

                // id
                statement.bindLong(1, card.getLong(0));
                // factId
                statement.bindLong(2, card.getLong(1));
                // cardModelId
                statement.bindLong(3, card.getLong(2));
                // created
                statement.bindDouble(4, card.getDouble(3));
                // modified
                statement.bindDouble(5, card.getDouble(4));
                // tags
                statement.bindString(6, card.getString(5));
                // ordinal
                statement.bindString(7, card.getString(6));
                // priority
                statement.bindString(8, card.getString(7));
                // interval
                statement.bindDouble(9, card.getDouble(8));
                // lastInterval
                statement.bindDouble(10, card.getDouble(9));
                // due
                statement.bindDouble(11, card.getDouble(10));
                // lastDue
                statement.bindDouble(12, card.getDouble(11));
                // factor
                statement.bindDouble(13, card.getDouble(12));
                // firstAnswered
                statement.bindDouble(14, card.getDouble(13));
                // reps
                statement.bindString(15, card.getString(14));
                // successive
                statement.bindString(16, card.getString(15));
                // averageTime
                statement.bindDouble(17, card.getDouble(16));
                // reviewTime
                statement.bindDouble(18, card.getDouble(17));
                // youngEase0
                statement.bindString(19, card.getString(18));
                // youngEase1
                statement.bindString(20, card.getString(19));
                // youngEase2
                statement.bindString(21, card.getString(20));
                // youngEase3
                statement.bindString(22, card.getString(21));
                // youngEase4
                statement.bindString(23, card.getString(22));
                // matureEase0
                statement.bindString(24, card.getString(23));
                // matureEase1
                statement.bindString(25, card.getString(24));
                // matureEase2
                statement.bindString(26, card.getString(25));
                // matureEase3
                statement.bindString(27, card.getString(26));
                // matureEase4
                statement.bindString(28, card.getString(27));
                // yesCount
                statement.bindString(29, card.getString(28));
                // noCount
                statement.bindString(30, card.getString(29));
                // question
                statement.bindString(31, card.getString(30));
                // answer
                statement.bindString(32, card.getString(31));
                // lastFactor
                statement.bindDouble(33, card.getDouble(32));
                // spaceUntil
                statement.bindDouble(34, card.getDouble(33));
                // type
                statement.bindString(35, card.getString(34));
                // combinedDue
                statement.bindString(36, card.getString(35));

                statement.execute();
            } catch (JSONException e) {
                Log.i(AnkiDroidApp.TAG, "JSONException = " + e.getMessage());
            }
        }
        statement.close();

        ankiDB.getDatabase().execSQL("DELETE FROM cardsDeleted WHERE cardId IN " + idsString);
    }
}

From source file:com.ichi2.anki.SyncClient.java

private void updateHistory(JSONArray history) {
    String sql = "INSERT OR IGNORE INTO reviewHistory (cardId, time, lastInterval, nextInterval, ease, delay, "
            + "lastFactor, nextFactor, reps, thinkingTime, yesCount, noCount) VALUES(?,?,?,?,?,?,?,?,?,?,?,?)";
    SQLiteStatement statement = AnkiDatabaseManager.getDatabase(mDeck.getDeckPath()).getDatabase()
            .compileStatement(sql);/*from   ww  w.  ja  v a  2 s  . c o  m*/
    int len = history.length();
    for (int i = 0; i < len; i++) {
        try {
            JSONArray h = history.getJSONArray(i);

            // cardId
            statement.bindLong(1, h.getLong(0));
            // time
            statement.bindDouble(2, h.getDouble(1));
            // lastInterval
            statement.bindDouble(3, h.getDouble(2));
            // nextInterval
            statement.bindDouble(4, h.getDouble(3));
            // ease
            statement.bindString(5, h.getString(4));
            // delay
            statement.bindDouble(6, h.getDouble(5));
            // lastFactor
            statement.bindDouble(7, h.getDouble(6));
            // nextFactor
            statement.bindDouble(8, h.getDouble(7));
            // reps
            statement.bindDouble(9, h.getDouble(8));
            // thinkingTime
            statement.bindDouble(10, h.getDouble(9));
            // yesCount
            statement.bindDouble(11, h.getDouble(10));
            // noCount
            statement.bindDouble(12, h.getDouble(11));

            statement.execute();
        } catch (JSONException e) {
            Log.i(AnkiDroidApp.TAG, "JSONException = " + e.getMessage());
        }
    }
    statement.close();
}

From source file:com.ichi2.anki.SyncClient.java

private void updateModels(JSONArray models) {
    ArrayList<String> insertedModelsIds = new ArrayList<String>();
    AnkiDb ankiDB = AnkiDatabaseManager.getDatabase(mDeck.getDeckPath());

    String sql = "INSERT OR REPLACE INTO models"
            + " (id, deckId, created, modified, tags, name, description, features, spacing, initialSpacing, source)"
            + " VALUES(?,?,?,?,?,?,?,?,?,?,?)";
    SQLiteStatement statement = ankiDB.getDatabase().compileStatement(sql);
    int len = models.length();
    for (int i = 0; i < len; i++) {
        try {/*from   www . ja v  a 2s  . co m*/
            JSONObject model = models.getJSONObject(i);

            // id
            String id = model.getString("id");
            statement.bindString(1, id);
            // deckId
            statement.bindLong(2, model.getLong("deckId"));
            // created
            statement.bindDouble(3, model.getDouble("created"));
            // modified
            statement.bindDouble(4, model.getDouble("modified"));
            // tags
            statement.bindString(5, model.getString("tags"));
            // name
            statement.bindString(6, model.getString("name"));
            // description
            statement.bindString(7, model.getString("name"));
            // features
            statement.bindString(8, model.getString("features"));
            // spacing
            statement.bindDouble(9, model.getDouble("spacing"));
            // initialSpacing
            statement.bindDouble(10, model.getDouble("initialSpacing"));
            // source
            statement.bindLong(11, model.getLong("source"));

            statement.execute();

            insertedModelsIds.add(id);

            mergeFieldModels(id, model.getJSONArray("fieldModels"));
            mergeCardModels(id, model.getJSONArray("cardModels"));
        } catch (JSONException e) {
            Log.i(AnkiDroidApp.TAG, "JSONException = " + e.getMessage());
        }
    }
    statement.close();

    // Delete inserted models from modelsDeleted
    ankiDB.getDatabase()
            .execSQL("DELETE FROM modelsDeleted WHERE modelId IN " + Utils.ids2str(insertedModelsIds));
}

From source file:com.ichi2.anki.SyncClient.java

private void mergeFieldModels(String modelId, JSONArray fieldModels) {
    ArrayList<String> ids = new ArrayList<String>();
    AnkiDb ankiDB = AnkiDatabaseManager.getDatabase(mDeck.getDeckPath());

    String sql = "INSERT OR REPLACE INTO fieldModels VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
    SQLiteStatement statement = ankiDB.getDatabase().compileStatement(sql);
    int len = fieldModels.length();
    for (int i = 0; i < len; i++) {
        try {//from w  w w  . java 2s.  com
            JSONObject fieldModel = fieldModels.getJSONObject(i);

            // id
            String id = fieldModel.getString("id");
            statement.bindString(1, id);
            // ordinal
            statement.bindString(2, fieldModel.getString("ordinal"));
            // modelId
            statement.bindLong(3, fieldModel.getLong("modelId"));
            // name
            statement.bindString(4, fieldModel.getString("name"));
            // description
            statement.bindString(5, fieldModel.getString("description"));
            // features
            statement.bindString(6, fieldModel.getString("features"));
            // required
            statement.bindLong(7, Utils.booleanToInt(fieldModel.getBoolean("required")));
            // unique
            statement.bindLong(8, Utils.booleanToInt(fieldModel.getBoolean("unique")));
            // numeric
            statement.bindLong(9, Utils.booleanToInt(fieldModel.getBoolean("numeric")));
            // quizFontFamily
            if (fieldModel.isNull("quizFontFamily")) {
                statement.bindNull(10);
            } else {
                statement.bindString(10, fieldModel.getString("quizFontFamily"));
            }
            // quizFontSize
            if (fieldModel.isNull("quizFontSize")) {
                statement.bindNull(11);
            } else {
                statement.bindString(11, fieldModel.getString("quizFontSize"));
            }
            // quizFontColour
            if (fieldModel.isNull("quizFontColour")) {
                statement.bindNull(12);
            } else {
                statement.bindString(12, fieldModel.getString("quizFontColour"));
            }
            // editFontFamily
            if (fieldModel.isNull("editFontFamily")) {
                statement.bindNull(13);
            } else {
                statement.bindString(13, fieldModel.getString("editFontFamily"));
            }
            // editFontSize
            statement.bindString(14, fieldModel.getString("editFontSize"));

            statement.execute();

            ids.add(id);
        } catch (JSONException e) {
            Log.i(AnkiDroidApp.TAG, "JSONException");
        }
    }
    statement.close();

    // Delete field models that were not returned by the server
    ArrayList<String> fieldModelsIds = ankiDB.queryColumn(String.class,
            "SELECT id FROM fieldModels WHERE modelId = " + modelId, 0);

    for (String fieldModelId : fieldModelsIds) {
        if (!ids.contains(fieldModelId)) {
            mDeck.deleteFieldModel(modelId, fieldModelId);
        }
    }
}

From source file:com.ichi2.anki.SyncClient.java

private void mergeCardModels(String modelId, JSONArray cardModels) {
    ArrayList<String> ids = new ArrayList<String>();
    AnkiDb ankiDB = AnkiDatabaseManager.getDatabase(mDeck.getDeckPath());

    String sql = "INSERT OR REPLACE INTO cardModels (id, ordinal, modelId, name, description, active, qformat, "
            + "aformat, lformat, qedformat, aedformat, questionInAnswer, questionFontFamily, questionFontSize, "
            + "questionFontColour, questionAlign, answerFontFamily, answerFontSize, answerFontColour, answerAlign, "
            + "lastFontFamily, lastFontSize, lastFontColour, editQuestionFontFamily, editQuestionFontSize, "
            + "editAnswerFontFamily, editAnswerFontSize, allowEmptyAnswer, typeAnswer) "
            + "VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
    SQLiteStatement statement = ankiDB.getDatabase().compileStatement(sql);
    int len = cardModels.length();
    for (int i = 0; i < len; i++) {
        try {//  w  w w. ja v a  2  s  . c om
            JSONObject cardModel = cardModels.getJSONObject(i);

            // id
            String id = cardModel.getString("id");
            statement.bindString(1, id);
            // ordinal
            statement.bindString(2, cardModel.getString("ordinal"));
            // modelId
            statement.bindLong(3, cardModel.getLong("modelId"));
            // name
            statement.bindString(4, cardModel.getString("name"));
            // description
            statement.bindString(5, cardModel.getString("description"));
            // active
            statement.bindLong(6, Utils.booleanToInt(cardModel.getBoolean("active")));
            // qformat
            statement.bindString(7, cardModel.getString("qformat"));
            // aformat
            statement.bindString(8, cardModel.getString("aformat"));
            // lformat
            if (cardModel.isNull("lformat")) {
                statement.bindNull(9);
            } else {
                statement.bindString(9, cardModel.getString("lformat"));
            }
            // qedformat
            if (cardModel.isNull("qedformat")) {
                statement.bindNull(10);
            } else {
                statement.bindString(10, cardModel.getString("qedformat"));
            }
            // aedformat
            if (cardModel.isNull("aedformat")) {
                statement.bindNull(11);
            } else {
                statement.bindString(11, cardModel.getString("aedformat"));
            }
            // questionInAnswer
            statement.bindLong(12, Utils.booleanToInt(cardModel.getBoolean("questionInAnswer")));
            // questionFontFamily
            statement.bindString(13, cardModel.getString("questionFontFamily"));
            // questionFontSize
            statement.bindString(14, cardModel.getString("questionFontSize"));
            // questionFontColour
            statement.bindString(15, cardModel.getString("questionFontColour"));
            // questionAlign
            statement.bindString(16, cardModel.getString("questionAlign"));
            // answerFontFamily
            statement.bindString(17, cardModel.getString("answerFontFamily"));
            // answerFontSize
            statement.bindString(18, cardModel.getString("answerFontSize"));
            // answerFontColour
            statement.bindString(19, cardModel.getString("answerFontColour"));
            // answerAlign
            statement.bindString(20, cardModel.getString("answerAlign"));
            // lastFontFamily
            statement.bindString(21, cardModel.getString("lastFontFamily"));
            // lastFontSize
            statement.bindString(22, cardModel.getString("lastFontSize"));
            // lastFontColour
            statement.bindString(23, cardModel.getString("lastFontColour"));
            // editQuestionFontFamily
            if (cardModel.isNull("editQuestionFontFamily")) {
                statement.bindNull(24);
            } else {
                statement.bindString(24, cardModel.getString("editQuestionFontFamily"));
            }
            // editQuestionFontSize
            if (cardModel.isNull("editQuestionFontSize")) {
                statement.bindNull(25);
            } else {
                statement.bindString(25, cardModel.getString("editQuestionFontSize"));
            }
            // editAnswerFontFamily
            if (cardModel.isNull("editAnswerFontFamily")) {
                statement.bindNull(26);
            } else {
                statement.bindString(26, cardModel.getString("editAnswerFontFamily"));
            }
            // editAnswerFontSize
            if (cardModel.isNull("editAnswerFontSize")) {
                statement.bindNull(27);
            } else {
                statement.bindString(27, cardModel.getString("editAnswerFontSize"));
            }
            // allowEmptyAnswer
            if (cardModel.isNull("allowEmptyAnswer")) {
                cardModel.put("allowEmptyAnswer", true);
            }
            statement.bindLong(28, Utils.booleanToInt(cardModel.getBoolean("allowEmptyAnswer")));
            // typeAnswer
            statement.bindString(29, cardModel.getString("typeAnswer"));

            statement.execute();

            ids.add(id);
        } catch (JSONException e) {
            Log.i(AnkiDroidApp.TAG, "JSONException = " + e.getMessage());
        }
    }
    statement.close();

    // Delete card models that were not returned by the server
    ArrayList<String> cardModelsIds = ankiDB.queryColumn(String.class,
            "SELECT id FROM cardModels WHERE modelId = " + modelId, 0);

    for (String cardModelId : cardModelsIds) {
        if (!ids.contains(cardModelId)) {
            mDeck.deleteCardModel(modelId, cardModelId);
        }
    }
}