如何在SQLite android中保存和检索路径图像

时间:2012-02-06 02:52:57

标签: java android sqlite

我想在我的应用程序中保存和检索图像路径

这是我的DBhelper

public void insert(String kdstore,String nama, String alamat, String kodepos, String notel, 
        String lng, String lat ,String Perus,String gambar){

    //waktu = new Date().toString();
    ContentValues cv = new ContentValues();
    cv.put("kdstore", kdstore);
    cv.put("nama", nama);
    cv.put("alamat", alamat);
    cv.put("kodepos", kodepos);
    cv.put("notel", notel);
    cv.put("lng", lng);
    cv.put("lat", lat);
    cv.put("Perus", Perus);
    cv.put("gambar", df.fileName);
    System.out.println();
    getWritableDatabase().insert("alfamapp", "name", cv);
}

这是我的startCameraActivity

_path=Environment.getExternalStorageDirectory().getPath() + "/DCIM/Camera/";
        fileName =  String.format(System.currentTimeMillis()+".jpg");
        File file = new File(_path, fileName);
        try {
        file.createNewFile();
        } catch (IOException e) {
        e.printStackTrace();
        }
        Uri outputFileUri = Uri.fromFile(file);
        Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);

        startActivityForResult(intent, IMAGE_CAPTURE); 

如何从数据库中的cameraActivity保存路径? 请帮帮我:)。


我把代码插入到startCamera方法上,这个代码就像这样

public void startCamera() 
{
    Cursor c = helper.getById(almagId);
    c.moveToFirst();

    file = new File(_path, fileName);
    try {
    file.createNewFile();
    } catch (IOException e) {
    e.printStackTrace();
    }    

    file1 = new File(_path, fileName);
    try {
    file1.createNewFile();
    } catch (IOException e) {
    e.printStackTrace();
    }

    Uri outputFileUri = Uri.fromFile(file);
    Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri);
    finishActivity(IMAGE_CAPTURE);

    Uri outputFileUri1 = Uri.fromFile(file1);
    intent.putExtra(MediaStore.EXTRA_OUTPUT, outputFileUri1);
    startActivityForResult(intent, IMAGE_CAPTURE);
    System.out.println(file1);

    Dbhelper helper = new Dbhelper(this);
    SQLiteDatabase db = helper.getWritableDatabase();
    db.execSQL("update alfamapp set gambar ='"+file+"',gambar1 ='"+file1+"' " +
                "where kdstore='"+helper.getKdStore(c)+"'");
    db.execSQL("insert into image (kdstore,image1) values ('"+helper.getKdStore(c)+"','"+file+"')");
    db.execSQL("update image set image2 ='"+file1+"' where kdstore='"+helper.getKdStore(c)+"'");
    db.close();
    helper.close();
    load();

    System.out.println(db);

}

然后使用此代码检索此图像

if(helper.getGamb(c).equals("")){
        System.out.println("gamb kosong");
        detGam.setImageResource(R.drawable.gambarnf);

    }else detGam.setImageDrawable(Drawable.createFromPath(helper.getGamb(c)));

你有我的代码的解决方案吗?非常感谢你:)

2 个答案:

答案 0 :(得分:1)

拍摄照片后,您可以使用onActivityResult来保存路径。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if( requestCode == IMAGE_CAPTURE && resultCode == Activity.RESULT_OK) {
        DBHelper dbHelper = new DBHelper(this);
        SQLiteDatabase sql = dbHelper.getWritableDatabase();
        sql.execSQL("insert statement for inserting path to database");
        sql.close();
        dbHelper.close();
    }
}

答案 1 :(得分:1)

使用此代码获取图像路径......

    public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        switch (requestCode) {
        case SELECT_IMAGE:
            String imagePath = getPath(data.getData());
            Savingimagepath(imagePath);
            img.setImageDrawable(Drawable.createFromPath(imagePath));
            break;
        }
    }
}

这是用于在数据库中保存路径的示例方法

private void Savingimagepath(String imagePath) {
    testDatabase testDB = new testDatabase(contact.this);
    testDB.open();

    try {
        testDB.getexecute("delete from ctoffice");
        testDB.getexecute("insert into ctoffice (idnt1)Values('"
                + imagePath + "')");
    } catch (Exception e) {
        System.out.println(e);
    }
    testDB.close();
}