J'essaie de faire des choses très simples, mais je suis venu avec la conclusion que mon code est très moche et je suis sûr qu'il existe des moyens d'améliorer la performance du code et la clarté.Réduire et améliorer le code pour la déclaration SQL
Comment puis-je le faire uniquement avec une instruction SQL dans Android SQLITE?
J'ai deux tables: A et B. Dans A colonnes colonnes d, p, u. Et dans la table B colonnes d, p, u. Les colonnes ont les mêmes noms.
J'ai besoin de trouver la dernière ligne ajoutée dans chaque table où la colonne p est une valeur. Et les colonnes de mise à jour d et u du tableau B avec des valeurs de colonnes d et u du tableau A.
final String selection = A.p + SQL_LIKE;
final String[] selectionArgs = new String[]{phone};
final String sortOrder = A.d + " DESC LIMIT 1";
final Cursor cursorA = getContentResolver().query(URI_A,
null, selection, selectionArgs, sortOrder);
if (cursorA != null && cursorA.moveToFirst()) {
final long dateTimeMillis = cursorA.getLong(cursorA.getColumnIndex(A.d));
final String selectionB = B.p + SQL_LIKE;
final String[] selectionArgsB = new String[]{'%' + phone};
final Cursor cursorB = getContentResolver().query(URI_A, null,
selectionB, selectionArgsB, A.d + " DESC LIMIT 1");
if(cursorB != null && cursorB.moveToFirst()){
final EntityB entityB = new EntityB().getUnitFromCursor(cursorB);
final ContentValues contentValues = new ContentValues();
contentValues.put(B.d, dateTimeMillis);
contentValues.put(B.u, durationMillis);
final String where = B._ID + SQL_ADD_VALUE;
final String[] whereArgs = new String[]{entityB.getId()};
getContentResolver.update(URI_B, values, where, whereArgs)
cursorB.close();
}
callLogCursor.close();
}
Question: Comment puis-je améliorer mon code à l'avenir si je besoin de quelque chose même je ne pas besoin d'écrire tellement de passe-partout et il semble plus propre. Je suis sûr que ce code peut être changé sur une seule instruction SQL - je pense que c'est la meilleure solution pour un tel problème.
Souhaitez-vous étiqueter toute autre langue autre que SQLite? – Yunnosch
Veuillez créer un [mcve], composé de quelques lignes de "create ..." et plusieurs lignes de "insert ...". l'outil de ligne de commande SQLite a la fonction '.dump' pour le faire commodément. Ajoutez la sortie désirée pour l'exemple de contenu de votre mcve. – Yunnosch
Si votre code fait essentiellement ce que vous voulez, alors la question nécessite une description spécifique du problème. Sinon, il est soit hors sujet pour être trop large ou pour appartenir à un site différent, c'est-à-dire https://codereview.stackexchange.com/ – Yunnosch