Android. Est-il possible d’écrire une fonction personnalisée sur C / C ++ et de l’utiliser dans une requête SQL?

SQLite3 ne supporte pas les procédures stockées. Est-il possible d’écrire une fonction personnalisée sur C / C ++ et de l’utiliser dans une requête SQL?

Quelque chose comme ca

SELECT * FROM table WHERE CUST_FUNCTION(name1, name2) = 1 

ou

 SELECT CUST_FUNCTION(name1, name2) FROM table 

Peut-être que vous avez un bon exemple comment faire cela.

Malheureusement, il semble que vous ne puissiez pas.

Je cherchais quelque chose comme ceci pour calculer la distance à partir d’une requête sqlite – c’était parfois mentionné comme méthode pour le faire.

sqlite supporte quelque chose comme ceci, donc la documentation et d’autres références suggèrent que c’est possible. Cependant , après avoir examiné diverses sources, je suis parvenu à la conclusion que, bien que vous puissiez le faire dans plusieurs endroits qui utilisent sqlite (comme l’iPhone, je crois), vous ne pouvez pas le faire dans le sqlite d’Android (du moins je n’ai pas trouvé quiconque est capable de le faire sous Android).

Voici quelques liens suggérant que cela n’était pas possible sous Android et, malheureusement, je n’ai trouvé aucun contre-exemple. Mais j’aimerais trouver que je me trompe à ce sujet …


Android sqlite sortinger sur la colonne calculée (distance de coordonnées)

  • “La technique que vous décrivez ne semble pas applicable à Android, qui ne peut pas utiliser sqlite3_create_function (). – CommonsWare le 9 janv. 10 à 19:00”

Sqlite sur Android: Comment créer une fonction sqlite dist db – à utiliser dans l’application pour calculer la distance à l’aide de lat, long

  • org.sqlite n’est pas une API Android, donc ce n’est pas pertinent. – hackbod 1 mars 10 à 4:59 1
  • Vous avez raison, org.sqlite n’est pas une API Android. Cependant, vous pouvez l’utiliser pour implémenter un fournisseur de contenu qui fait ce qu’il a demandé. – Joshua Smith 1 mars 10 à 12:39
  • En fait, je suis plutôt sceptique quant à l’approche décrite dans la réponse du fournisseur de contenu à laquelle vous vous connectez. org.sqlite n’est pas dans Android, et il n’est pas clair s’il existe une implémentation org.sqlite qui fonctionnera de concert avec l’environnement SQLite d’Android. – Pentium10 27 juin ’10 à 9:12

Oui, cela pourrait être possible, mais cela ne sera pas officiellement pris en charge sur Android. Nous pouvons le faire soit en écrivant notre object partagé en C et SQLite de manière native. Je pense qu’une autre solution consisterait à utiliser des bibliothèques Java pour SQLite au lieu de s’appuyer sur les bibliothèques de Google.

Je n’ai pas fait de développement Android, mais c’est certainement possible sur d’autres plateformes.

Consultez l’API sqlite_create_funciton http://www.sqlite.org/c3ref/create_function.html