Comment puis-je créer une fonction définie par l'utilisateur dans SQLite?
Je développe une application sous android et j'ai besoin de créer un fichier udf dans sqlite. Est-il possible de créer dans sqlite? Et si oui comment faire?
- BTW, pourquoi ne pas recompiler sqlite avec fonction supplémentaire(s) ?
- Il est une excellente description de la façon de le faire en Java, sans avoir besoin de compiler SQLite module C avec le NDK, programering.com/a/MDO0ADMwATU.html (à l'aide de SQLiteOpenHelper).
Vous devez vous connecter pour publier un commentaire.
SQLite n'ont pas de soutien pour les fonctions définies par l'utilisateur dans la façon dont Oracle ou MS SQL Server n'. Pour SQLite, vous devez créer une fonction de rappel en C/C++ et un crochet de la fonction d'aide à la sqlite3_create_function appel.
Malheureusement, l'API SQLite pour Android n'autorise pas la
sqlite3_create_function
appeler directement via Java. Afin de l'obtenir pour fonctionner, vous aurez besoin de compiler le SQLite de la bibliothèque C avec le NDK.Et si vous êtes toujours intéressé de lire 2.3 fonctions définies par l'Utilisateur...
Voici comment créer une fonction qui trouve le premier octet d'une chaîne de caractères.
Fixez ensuite la fonction à la base de données.
Enfin, l'utilisation de la fonction dans une instruction sql.
sqlite3_create_function(db, "firstchar", 1, SQLITE_UTF8, NULL, &firstchar, NULL, NULL)
déclaration (dans le sqlite.c fichier; si non, comment avez-vous déclarerdb
dans un fichier séparé)?System.loadLibrary("sqliteExtensionName")
encore avoir d'erreurno such function: firstchar
les idées de ce que serait le mal ?.so
mais aussi à l'aide de Java sqlite méthodes. Vous ne pouvez pas se mêler à deux.sqlite3_create_function(db, "firstchar", 1, SQLITE_UTF8, NULL, &firstchar, NULL, NULL)
déclaration (dans lesqlite.c
fichier; si non, comment avez-vous déclarer db dans un fichier séparé)?sqlite3_create_function
appel immédiatement à la suite d'un succèssqlite3_open
appel.sqlite3_create_function
doit être ajouté à un fichier C dans votre NDK projet. Cette fonction doit être appelée une fois que vous ouvrez la base de données Sqlite. Gardez à l'esprit que cette fonction peut uniquement être utilisée dans le NDK et que vous devez également inclure le sqlite.c votre fichier NDK projet. Ainsi, la Java de l'API Sqlite ne peut pas interagir avec le NDK. Fondamentalement, vous devez choisir entre NDK/Sqlite ou JDK/Sqlite.wrong number of arguments to function firstchar() (code 1)
. De bien vouloir m'aider. Je serai reconnaissant si vous aussi vous avez un coup d'oeil à question j'ai demandéPas valide - voir les commentaires
Il devrait être possible avec SQLiteCustomFunction à partir de l'Android SDK 17 qui vous offre un rappel dans du code Java.
Ajouter avec
addCustomFunction
méthode dans le SQLiteDatabase.Mais je dois dire que je n'ai pas d'expérience avec elle.
@hide
et ne sont pas disponibles dans le SDK.