-1
私はこのarticleに続き、昨夜のアンドロイド用バインディングライブラリを作成しました。私はテストクエリを実行することができ、それはOKでした。今私は独自のユーザー定義関数を接続に追加しようとしています。機能が正常に追加され、それがtestfunc
が存在しない、それは何も返さないことを言っていませんがSQLiteDatabase.CustomFunctionをどのように活用できますか?
class MyHelper extends SQLiteOpenHelper {
public MyHelper(Context ctx) {
super(ctx, DB_PATH.getPath(), null, 1);
}
public void onConfigure(SQLiteDatabase db) {
db.execSQL("PRAGMA key = 'secret'");
}
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE t1(x)");
}
public void onUpgrade(SQLiteDatabase db, int iOld, int iNew) {
}
}
MyHelper helper = new MyHelper(this);
SQLiteDatabase db = helper.getWritableDatabase();
db.addCustomFunction("testfunc", 1, new SQLiteDatabase.CustomFunction() {
@Override
public void callback(String[] args) {
args[0] = args[0] + "test";
}
});
db.execSQL("INSERT INTO t1 VALUES ('ali'), ('asghar'), ('toraby')");
Cursor cursor = db.rawQuery("SELECT testfunc(x) as test , x FROM t1", null);
cursor.moveToFirst();
do {
String str = cursor.getString(cursor.getColumnIndex("x"));
String str2 = cursor.getString(cursor.getColumnIndex("test"));
Log.d("Test" , str);
} while (cursor.moveToNext());
:ここ
は、私はこの機能を追加するために書かれているコードです。コールバックインターフェイスメソッドには出力がありませんので、どのようにカスタム関数内から値を返すことができますか?
私もCustomFunction
の次の実装を試してみましたが、それは再びnullを返します:
db.addCustomFunction("testfunc", 1, new SQLiteDatabase.CustomFunction() {
@Override
public String callback(String[] args) {
return args[0];
}
});
この点で任意の助けのためにありがとうございます。
私は文字列の出力とCustomFunctionを試みたが、どちらも文字列でもボイドはそれが動作しないようです。 –