2017-02-15 10 views
-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]; 
      } 
     }); 

この点で任意の助けのためにありがとうございます。

答えて

1

ソースコード(android_database_SQLiteConnection.cpp)は言う:

// TODO: Support functions that return values. 
+0

私は文字列の出力とCustomFunctionを試みたが、どちらも文字列でもボイドはそれが動作しないようです。 –

関連する問題