Java Android Sqlite使用来自JNI的字符串更新最后一条记录

Java Android Sqlite使用来自JNI的字符串更新最后一条记录,java,android,sqlite,Java,Android,Sqlite,我有一个应用程序,可以在实时视频中测量彩色圆圈之间的距离。我可以从JNI获得字符串。现在,我想将该字符串保存到我的数据库中,但我无法使其工作 这是我的db助手类: public class DatabaseHelperUBack extends SQLiteOpenHelper { public static final String DATABASE_NAME="ubackrecords.db"; public static final String TABLE_NAME="

我有一个应用程序,可以在实时视频中测量彩色圆圈之间的距离。我可以从JNI获得字符串。现在,我想将该字符串保存到我的数据库中,但我无法使其工作

这是我的db助手类:

public class DatabaseHelperUBack extends SQLiteOpenHelper {

    public static final String DATABASE_NAME="ubackrecords.db";
    public static final String TABLE_NAME="records_table";
    public static final String COL_0="ID";
    public static final String COL_1="UBack";

    public DatabaseHelperUBack(Context context) {
        super(context, DATABASE_NAME, null, 1);


    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("create table " + TABLE_NAME + " (ID INTEGER PRIMARY KEY AUTOINCREMENT, UBack TEXT) ");
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXIST "+TABLE_NAME);
    }


    //public boolean insertData(String name, String date_today, String sleeve, String shoulder, String body_length, String cross_back, String bw_length, String bn_cuff, String inseam, String outseam){

    public boolean insertData(String uback){

        SQLiteDatabase db=this.getWritableDatabase();

        ContentValues contentValues = new ContentValues();
        contentValues.put(COL_1,uback);

        long result = db.insert(TABLE_NAME, null, contentValues);

        if(result == -1)
            return false;
        else
            return true;

    }

    public boolean updateData(String id, String uback){

        SQLiteDatabase db=this.getWritableDatabase();

        ContentValues contentValues = new ContentValues();
        contentValues.put(COL_0,id);
        contentValues.put(COL_1,uback);

        db.update(TABLE_NAME, contentValues, "ID = ?", new String[] { id } );

            return true;

    }

    public Cursor getAllData(){

        SQLiteDatabase db=this.getWritableDatabase();

        Cursor res = db.rawQuery("select * from "+TABLE_NAME,null);
        return res;

    }


}
我让它在下面的类上工作,但我只让它在表的ID=1时工作。我不知道如何检索表的最后一行,因此它将是要更新/替换的行(因为它是实时摄影机提要)


我希望根据本页内容编辑您的答案:我希望根据本页内容编辑您的答案:
public class UBackTrackViewer extends SampleViewBase{


    DatabaseHelperUBack myDb;

    private Context mContext;

    private int mFrameSize;
    private Bitmap mBitmap;
    private int[] mRGBA;


    public UBackTrackViewer(Context context) {
        super(context);

        this.mContext = context;

        myDb = new DatabaseHelperUBack(mContext);
    }


    public String messageMe2(String text) {
        System.out.println(text);

        myDb.updateData("1", text);

        return text;
    }



    @Override
    public boolean onTouchEvent(MotionEvent event){

        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:

                myDb.insertData("");


    }


    static {
        System.loadLibrary("objtrack_opencv_jnii_uback");
    }



    @Override
    protected void onPreviewStared(int previewWidtd, int previewHeight) {
        mFrameSize = previewWidtd * previewHeight;
        mRGBA = new int[mFrameSize];
        mBitmap = Bitmap.createBitmap(previewWidtd, previewHeight, Bitmap.Config.ARGB_8888);
    }


    @Override
    protected void onPreviewStopped() {
        if(mBitmap != null) {
            mBitmap.recycle();
            mBitmap = null;
        }
        mRGBA = null;

    }



    @Override
    protected Bitmap processFrame(byte[] data) {
        int[] rgba = mRGBA;

        UBackObjectTrack(getFrameWidth(), getFrameHeight(), data, rgba, LowerActivity.bShowTresholded);

        //returnUback3(getFrameWidth(), getFrameHeight(), data, rgba, LowerActivity.bShowTresholded);
       // returnUback(getFrameWidth(), getFrameHeight(), data, rgba, LowerActivity.bShowTresholded);
        //returnUback2(getFrameWidth(), getFrameHeight(), data, rgba, LowerActivity.bShowTresholded);

        Bitmap bmp = mBitmap;
        bmp.setPixels(rgba, 0/* offset */, getFrameWidth() /* stride */, 0, 0, getFrameWidth(), getFrameHeight());
        return bmp;
    }

    //public native void returnUback(int width, int height, byte yuv[], int[] rgba, boolean debug);
   // public native void returnUback2(int width, int height, byte yuv[], int[] rgba, boolean debug);
    //public native void returnUback3(int width, int height, byte yuv[], int[] rgba, boolean debug);

    public native void UBackObjectTrack(int width, int height, byte yuv[], int[] rgba, boolean debug);

    public native String UBackObjectTrack();

    static {
        System.loadLibrary("objtrack_opencv_jnii_uback");
    }
}