How to create a Table with a column of type BLOB in a DBAdapter

前端 未结 2 677
半阙折子戏
半阙折子戏 2020-12-06 15:10

I have a global DBAdapter and also for each Table one. In my global DB-Adapter I added the type \"BLOB\" to the column. But i don\'t get what i have to change in my DBAdapte

相关标签:
2条回答
  • 2020-12-06 15:44

    I really want to display image in list or gridview by fetching from sqlite db and after searching i found one article which work for me. I hope it will helpful for you. Insert Image in SQLite and Display in ListView

    0 讨论(0)
  • 2020-12-06 15:49

    Check this Code for Inserting the Image from the Web link and store in the Database as BLOB and shown in ImageView .

    Java Code :

    CategoryDetails.Java

    public class CategoryDetails extends Activity {
    
    public NotesDbAdapter mDbHelper;
    ByteArrayBuffer baf ;
     private Cursor mNotesCursor;
    ImageView img;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
    
        mDbHelper = new NotesDbAdapter(this);
        mDbHelper.open();
        new Task_like_flag().execute();
    
        img=(ImageView)findViewById(R.id.ImageView01);
    
    }
    
    
    public Bitmap convertBlobToBitmap(byte[] blobByteArray) {       
        Bitmap tempBitmap=null;        
        if(blobByteArray!=null)
        tempBitmap = BitmapFactory.decodeByteArray(blobByteArray, 0, blobByteArray.length);
        return tempBitmap;
    }
          public class Task_like_flag extends AsyncTask<String, Void, Void> {
                private final ProgressDialog dialog = new ProgressDialog(CategoryDetails.this);
                JSONObject object_feed;
                // can use UI thread here
                protected void onPreExecute() {
                  this.dialog.setMessage("Loading...");
                  this.dialog.setCancelable(false);
                  this.dialog.show();
                }
    
                @Override
                protected Void doInBackground(String... params) {
                    URL url = null;
                    try {
                        url = new URL("http://www.theblacksheeponline.com/uploaded/Quick_images/681314276069brewehas.jpg");
                    } catch (MalformedURLException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }  //http://example.com/image.jpg
                    //open the connection
                    URLConnection ucon = null;
                    try {
                        ucon = url.openConnection();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    //buffer the download
                    InputStream is = null;
                    try {
                        is = ucon.getInputStream();
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                    BufferedInputStream bis = new BufferedInputStream(is,128);
                    baf = new ByteArrayBuffer(128);
                    //get the bytes one by one
                    int current = 0;
                    try {
                        while ((current = bis.read()) != -1) {
                                baf.append((byte) current);
                        }
                    } catch (IOException e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                      mDbHelper.createNote(baf.toByteArray());
                    return null;
                }
    
                  @Override
                  protected void onPostExecute(Void result) {
                      byte[] imageByteArray;
                      Bitmap theImage = null;
                    try{
                          mNotesCursor = mDbHelper.fetchAllNotes();
                          startManagingCursor(mNotesCursor);
    
                        if (mNotesCursor.moveToFirst()) {
    
    
                          do {
                              imageByteArray   =  mNotesCursor.getBlob(mNotesCursor.getColumnIndex(NotesDbAdapter.KEY_IMAGE));
                              ByteArrayInputStream imageStream = new ByteArrayInputStream(imageByteArray);
                              theImage= BitmapFactory.decodeStream(imageStream);
    
                          } while (mNotesCursor.moveToNext());
                      }
                    }catch(Exception e){
                      Log.v("Excep", ""+e);
                    }
                    img.setImageBitmap(theImage);
                      if (this.dialog.isShowing()) {
                          this.dialog.dismiss();
                        }
                  }
                }
    
      }
    

    NotesDbAdapter.Class

    public class NotesDbAdapter {
    
    public static final String KEY_CATEGORY = "category";
    public static final String KEY_DATE = "notes_date";
    public static final String KEY_DESC = "item_desc";
    public static final String KEY_PRIZE = "item_prize";
    public static final String KEY_MODE = "mode";
    public static final String KEY_MONTH = "month";
    public static final String KEY_IMAGE = "img";
    
    
    public static final String KEY_ROWID = "_id";
    
    private static final String TAG = "NotesDbAdapter";
    private DatabaseHelper mDbHelper;
    private SQLiteDatabase mDb;
    
    /**
     * Database creation sql statement
     */
    private static final String DATABASE_CREATE =
            "create table notes (_id integer primary key autoincrement, "
                    + "img BLOB not null);";
    
    
    
    private static final String DATABASE_NAME = "data";
    private static final String DATABASE_TABLE = "notes";
    private static final int DATABASE_VERSION = 2;
    
    private final Context mCtx;
    
    private static class DatabaseHelper extends SQLiteOpenHelper {
    
        DatabaseHelper(Context context) {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
    
        @Override
        public void onCreate(SQLiteDatabase db) {
    
            db.execSQL(DATABASE_CREATE);
        }
    
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            Log.w(TAG, "Upgrading database from version " + oldVersion + " to "
                    + newVersion + ", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS notes");
            onCreate(db);
        }
    }
    
    /**
     * Constructor - takes the context to allow the database to be
     * opened/created
     * 
     * @param ctx the Context within which to work
     */
    public NotesDbAdapter(Context ctx) {
        this.mCtx = ctx;
    }
    
    /**
     * Open the notes database. If it cannot be opened, try to create a new
     * instance of the database. If it cannot be created, throw an exception to
     * signal the failure
     * 
     * @return this (self reference, allowing this to be chained in an
     *         initialization call)
     * @throws SQLException if the database could be neither opened or created
     */
    public NotesDbAdapter open() throws SQLException {
        mDbHelper = new DatabaseHelper(mCtx);
        mDb = mDbHelper.getWritableDatabase();
        return this;
    }
    
    public void close() {
        mDbHelper.close();
    }
    
    
    /**
     * Create a new note using the title and body provided. If the note is
     * successfully created return the new rowId for that note, otherwise return
     * a -1 to indicate failure.
     * 
     * @param title the title of the note
     * @param body the body of the note
     * @return rowId or -1 if failed
     */
    public long createNote(byte[] img) {
         byte yes[]=img;
        ContentValues initialValues = new ContentValues();
        initialValues.put(KEY_IMAGE, yes);
        Log.v("row", ""+mDb.insert(DATABASE_TABLE, null, initialValues));
        return mDb.insert(DATABASE_TABLE, null, initialValues);
    
    }
    
    
    /**
     * Return a Cursor over the list of all notes in the database
     * 
     * @return Cursor over all notes
     */
    public Cursor fetchAllNotes() {
        return mDb.query(DATABASE_TABLE, null, null, null, null, null, null);
    } }
    

    Main.xml :

    <?xml version="1.0" encoding="utf-8"?>
       <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
       >
    
      <ImageView        android:id="@+id/ImageView01"       android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:src="@drawable/icon"/>
     </LinearLayout>
    

    Let me know if you find any Difficulty.

    Thanks Venky..

    0 讨论(0)
提交回复
热议问题