Voici le LOGCAT:
01-15 16:52:07.857: VERBOSE/TasksProvider(24325): Creating database... 01-15 16:52:07.862: VERBOSE/TasksProvider(24325): _id 01-15 16:52:07.862: VERBOSE/TasksProvider(24325): title 01-15 16:52:07.862: VERBOSE/TasksProvider(24325): completed 01-15 16:52:07.862: VERBOSE/TasksProvider(24325): due_date 01-15 16:52:07.862: VERBOSE/TasksProvider(24325): notes 01-15 16:52:07.862: VERBOSE/TasksProvider(24325): importance
3 Réponses :
J'ai trouvé une solution étrange à cela. Dans String [] Projection Code>. Vous devez faire:
private String[] PROJECTION {
Tasks._ID,
Tasks.TITLE,
Tasks.COMPLETED,
Tasks.DUE_DATE + " as " + Tasks.DUE_DATE,
Tasks.IMPORTANCE + " as " + Tasks.DUE_DATE,
Tasks.NOTES + " as " + Tasks.NOTES
};
Avez-vous ajouter cette colonne dans la carte de projection du fournisseur de contenu, par rapport à la table avec cette colonne? J'espère que cela vous aidera. P>
La colonne existe sans aucun doute dans votre base de données, mais si vous n'avez pas ajouté la colonne à une chose appelée la carte projection em>, vous obtiendrez la "colonne invalide" que vous voyez. . Vous pouvez ajouter la carte de projection via un objet Builder de requête, comme celui-ci: Pour comprendre ce qui se passe, regardez la source de la classe SQLITEQUERYBUILDER, et vous verrez ce qui suit: p> Il est essentiellement en train de vérifier les colonnes que vous avez demandées dans votre projection sur une liste de colonnes "autorisées" et que vous pouvez voir que si la carte ne contient pas la colonne de votre projection, elle Je vais lancer une idée illegalargumentException, tout comme vous l'avez vu. (J'imagine que cette vérification sur la carte est une fonctionnalité de sécurité pour empêcher les attaques SQL à partir de personnes qui abusent de votre fournisseur de contenu, mais c'est juste une supposition.) P> Notez également que si vous définissez des cartes de projection "strictes". dans votre constructeur de requêtes: p> puis dans ce cas, il s'attend à ce que vous connaissiez les noms de colonne exacts ... Si vous ne le définissez pas, il vérifie le "comme "Alias de colonne - Je pense que cela explique la" solution bizarre "que vous avez découverte. p> espère que cela aide. p> p>
Qui est la ligne: 105? Tâche = getContentresolver (). Query (Uri, Projection, NULL, NULL, NULL);
À propos de - 'Colonne non valide dus_date'. Êtes-vous sûr à 100% qu'il y a une telle colonne?
Vérifiez la mise à jour. Je suis très sûr et j'ai une preuve de logcat que "dus_date" existe.
Pourquoi les trois dernières valeurs de la projection sont-elles définies avec «comme»? Peut-être que ces valeurs sont des entiers / longs?