رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

ذخیره کردن id عکس ها در پایگاه داده اندروید از عکس های فولدر assets


پست های پیشنهاد شده

مجموعه ای از image ها در فولدر assets ذخیره شده اند می خواهم در پایگاه داده sqlite اندروید فیلد imageID درست کنم که همان id عکس های ذخیره شده در فولد assets باشند، یعنی نمی خواهم خود عکس ها را مستقیما در پایگاه داده sqlite وارد کنم آنها را وارد پوشه assets کرده و از آنجا id شان را sqlite وارد کنم و از روی id ها عکس ها را نمایش دهم. برای انجام این کار چه راه حلی مناسب است؟آیا کدی هست که بتواند در این زمینه به من کمک کند؟

ممنون

لینک ارسال
به اشتراک گذاری در سایت های دیگر
سلام دوست عزیز

بله میشه.شما اسم عکس و توی دیتابیس ذخیره میکنین برای خوندن و نمایش دادن اون از کد زیر استفاده کنین

[shcode=java]db = myDatabase.getReadableDatabase();

        final Cursor c2 = db.rawQuery("select * from Images where Article_Id="

                + id + "", null);

        for (; c2.moveToNext();) {

            String imgName = c2.getString(c2.getColumnIndex("ImgName"));

            int ImageResource = getResources().getIdentifier(imgName,

                    "drawable", getPackageName());

            img1.setImageResource(ImageResource);

        }[/shcode]

لینک ارسال
به اشتراک گذاری در سایت های دیگر

در فولدر assets امکان استفاده از id وجود ندازه بدیل اینکه Id ها در بخش res ایجاد میشود و بطور خودکار در فایل R ایجاد میشوند

لینک ارسال
به اشتراک گذاری در سایت های دیگر
سلام دوست عزیز

بله میشه.شما اسم عکس و توی دیتابیس ذخیره میکنین برای خوندن و نمایش دادن اون از کد زیر استفاده کنین

[shcode=java]db = myDatabase.getReadableDatabase();

        final Cursor c2 = db.rawQuery("select * from Images where Article_Id="

                + id + "", null);

        for (; c2.moveToNext();) {

            String imgName = c2.getString(c2.getColumnIndex("ImgName"));

            int ImageResource = getResources().getIdentifier(imgName,

                    "drawable", getPackageName());

            img1.setImageResource(ImageResource);

        }[/shcode]

لینک ارسال
به اشتراک گذاری در سایت های دیگر
سلام دوست عزیز

بله میشه.شما اسم عکس و توی دیتابیس ذخیره میکنین برای خوندن و نمایش دادن اون از کد زیر استفاده کنین

[shcode=java]db = myDatabase.getReadableDatabase();

        final Cursor c2 = db.rawQuery("select * from Images where Article_Id="

                + id + "", null);

        for (; c2.moveToNext();) {

            String imgName = c2.getString(c2.getColumnIndex("ImgName"));

            int ImageResource = getResources().getIdentifier(imgName,

                    "drawable", getPackageName());

            img1.setImageResource(ImageResource);

        }[/shcode]


سلام

من از کد زیر برای نمایش عکس هایی که به صورت BLOB در دیتابیس SQLite ذخیره شدند استفاده کردم اما نمی دانم برای ذخیره آدرس عکس ها در دیتابیس و فراخوانی آن در برنامه چه کار کنم؟

[align=left]Database.java

package com.example.newdatabaseproject;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.List;

import android.R.raw;

import android.content.ContentValues;

import android.content.Context;

import android.database.Cursor;

import android.database.SQLException;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteDatabase.CursorFactory;

import android.database.sqlite.SQLiteException;

import android.database.sqlite.SQLiteOpenHelper;

import android.util.Log;

import android.widget.ImageView;

public class Database extends SQLiteOpenHelper {

   

    private static final SQLiteOpenHelper DBHelper = null;

    private static final String img1 = null;

    String DB_PATH = null;

    public static String DB_NAME = "bank1";

    private SQLiteDatabase myDataBase;

    private final Context myContext;

    //private SQLiteDatabase db;

     Database db = new Database(null);

   

    /**

     * Constructor Takes and keeps a reference of the passed context in order to

     * access to the application assets and resources.

     *

     * @param context

     */

    public Database(Context context) {

        super(context,DB_NAME, null, 2);

        this.myContext = context;

        DB_PATH = "/data/data/" + context.getPackageName() + "/" + "databases/";

    }

    public void createDataBase() throws IOException {

       

        boolean dbExist = checkDataBase();

        if (dbExist) {

            // do nothing - database already exist

        } else {

            // By calling this method and empty database will be created into

            // the default system path

            // of your application so we are gonna be able to overwrite that

            // database with our database.

            this.getReadableDatabase();

            try {

                copyDataBase();

            } catch (IOException e) {

                throw new Error("Error copying database");

            }

        }

    }

   

    private boolean checkDataBase() {

        SQLiteDatabase checkDB = null;

        try {

            String myPath = DB_PATH + DB_NAME;

            checkDB = SQLiteDatabase.openDatabase(myPath, null,

                    SQLiteDatabase.OPEN_READONLY);

        } catch (SQLiteException e) {

            // database does't exist yet.

        }

        if (checkDB != null) {

            checkDB.close();

        }

        return checkDB != null ? true : false;

    }

    /**

     * Copies your database from your local assets-folder to the just created

     * empty database in the system folder, from where it can be accessed and

     * handled. This is done by transfering bytestream.

     * */

    private void copyDataBase() throws IOException {

        // Open your local db as the input stream

        InputStream myInput = myContext.getAssets().open(DB_NAME);

        // Path to the just created empty db

        String outFileName = DB_PATH + DB_NAME;

        // Open the empty db as the output stream

        OutputStream myOutput = new FileOutputStream(outFileName);

        // transfer bytes from the inputfile to the outputfile

        byte[] buffer = new byte[1024];

        int length;

        while ((length = myInput.read(buffer)) > 0) {

            myOutput.write(buffer, 0, length);

        }

        // Close the streams

        myInput.close();

        myOutput.flush();

        myOutput.close();

    }

   

    //public void getpic(int id){

        /*Cursor cu=myDataBase.rawQuery("select * from tbl2 where ID="+id,null);

        cu.moveToFirst();

        byte[] s;

        s=cu.getBlob(2);

        return s;*/

        //SQLiteDatabase db = dbHelper.getReadableDatabase();

       

    public void openDataBase() throws SQLException {

        // Open the database

        String myPath = DB_PATH + DB_NAME;

        // SQLiteDatabase.NO_LOCALIZED_COLLATORS

        myDataBase = SQLiteDatabase.openDatabase(myPath, null,

                SQLiteDatabase.OPEN_READONLY

                        | SQLiteDatabase.NO_LOCALIZED_COLLATORS

                        | SQLiteDatabase.CREATE_IF_NECESSARY);

    }

    @Override

    public synchronized void close() {

        if (myDataBase != null)

            myDataBase.close();

        super.close();

    }

    // return cursor

public Cursor query(String table, String[] columns, String selection,

            String[] selectionArgs, String groupBy, String having,

            String orderBy) {

        return myDataBase.query("pwp_singers", null, null, null, null, null,

                null);

    }

@Override

public void onUpgrade(SQLiteDatabase myDataBase, int oldVersion,int newVersion)

{

   

}

public void useable() {

           

            boolean checkdb=checkDataBase();

           

            if(checkdb){

            }else{

               

                this.getReadableDatabase();

               

                try{

                copyDataBase();

                }catch(IOException e){

                }

               

            }

                   

        }   

   

public void open(){

   

    myDataBase=SQLiteDatabase.openDatabase(DB_PATH+DB_NAME, null, SQLiteDatabase.OPEN_READWRITE);

   

}

@Override

public void onCreate(SQLiteDatabase arg0) {

    // TODO Auto-generated method stub

   

}

public Cursor rawQuery(String string, Object object) {

    // TODO Auto-generated method stub

    return null;

}

}

***************************

Main.java

package com.example.newdatabaseproject;

import java.io.InputStream;

import android.os.AsyncTask;

import android.os.Bundle;

import android.app.Activity;

import android.content.BroadcastReceiver;

import android.content.Context;

import android.content.Intent;

import android.content.IntentFilter;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.graphics.Bitmap;

import android.graphics.BitmapFactory;

import android.view.Menu;

import android.view.MenuInflater;

import android.view.MenuItem;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageView;

public class Main extends Activity {

   

    private EditText et;

    private Button btn;

    private Database db;

    static SQLiteDatabase Db;

    private ImageView img;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

           

        et=(EditText)findViewById(R.id.et1);

        img=(ImageView)findViewById(R.id.img);

        btn=(Button)findViewById(R.id.btn);

        db=new Database(this);

        db.useable();

       

        btn.setOnClickListener(new OnClickListener(){

            @Override

            public void onClick(View arg0) {

                db.open();

               

                byte[] p=db.getpic(Integer.parseInt(et.getText().toString()));

               

                if(p!=null){

                    Bitmap bm=BitmapFactory.decodeByteArray(p, 0, p.length);

                    img.setImageBitmap(bm);

                }else{

                   

                }

               

                db.close();

       

   

        });

    }

       

   

    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.

                getMenuInflater().inflate(R.menu.main, menu);

                return true;

               

    }

}

       

       

       

       

   

   

[/align]

لینک ارسال
به اشتراک گذاری در سایت های دیگر
سلام

دوست عزیز شما عکسها رو توی پوشه دراویبل بذار توی دیتابیس هم فقط اسم عکس و بنویس بدون پسوند

لینک ارسال
به اشتراک گذاری در سایت های دیگر
سلام.من وقتی از کد زیر برای نمایش ستونهای حاوی نام عکس ها استفاده می کنم فقط یکی از عکس ها نشان داده می شود .مشکلش کجاست؟
[align=left]myDataBase=db.getReadableDatabase();[/align]
[align=left] final Cursor c2 = myDataBase.rawQuery("select * from ImagesName ",null);[/align]
[align=left] //String imgName=c2.getString(c2.getColumnIndex("ImgName"));[/align]
[align=left] //for(c2.moveToNext() ();){[/align]
[align=left] img=(ImageView)findViewById(R.id.img);[/align]
[align=left] Context context=img.getContext();[/align]
[align=left] String imgName = c2.getString(c2.getColumnIndex("ImgName"));[/align]
[align=left] int ImageResource = getResources().getIdentifier(imgName,"drawable",context.getPackageName());[/align]
[align=left] img.setImageResource(ImageResource);[/align]
سلام

دوست عزیز شما عکسها رو توی پوشه دراویبل بذار توی دیتابیس هم فقط اسم عکس و بنویس بدون پسوند

لینک ارسال
به اشتراک گذاری در سایت های دیگر

ر کد زیر را که برای فراخوانی عکس ها از پوشه drawable در پایگاه داده sqlite استفاده می کنم فقط یکی از عکس ها را نشان می دهد من می خواهم همه عکس ها را نشان دهد.باید چه کار کنم؟

[align=left]myDataBase=db.getReadableDatabase();[/align]

[align=left]final Cursor c2 = myDataBase.rawQuery("select * fromImagesName ",null);[/align]

[align=left]for(;c2.moveToNext();){[/align]

[align=left]img=(ImageView)findViewById(R.id.img);[/align]

[align=left]Context context=img.getContext();[/align]

[align=left]String imgName =c2.getString(c2.getColumnIndex("ImgName"));[/align]

[align=left]intImageResource=getResources().getIdentifier(imgName,"drawable",context.getPackageName());[/align]

[align=left]img.setImageResource(ImageResource);[/align]

لینک ارسال
به اشتراک گذاری در سایت های دیگر

منم همین مشکل رو دارم عکسهام رو داخل دیتابیس ریختم ولی موقع فراخانی فقط یه عکس نشون میده دوستان لطفا کمک کنید

اینم کد جاوا:

[shcode=java] img=(ImageView) findViewById(R.id.main_matn_img);

       

       

        db=new database(this);

       

        db.useable();

       

        db.open();

           

            byte[] p=db.getpic(1);

           

            if(p!=null){

            Bitmap bm=BitmapFactory.decodeByteArray(p, 0, p.length);

            img.setImageBitmap(bm);

            }else{

               

            }

           

            db.close();

         [/shcode]

اینم کد دیتابیسم:

[shcode=java] public byte[] getpic(int id){

       

    Cursor cu=mydb.rawQuery("select * from content where ID="+id, null);

    cu.moveToFirst();

    byte[] s;

    s=cu.getBlob(6);

    return s;

   

    }[/shcode]

چیکار کنم؟

لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...