简体   繁体   中英

How to insert an image into sqlite database?

I have tried the following code :

1.Code to convert bitmap to byte array :

private byte[] bitmaptoByteArray( Bitmap bmp)
      {
          ByteArrayOutputStream stream = new ByteArrayOutputStream();
          bmp.compress(Bitmap.CompressFormat.PNG, 100, stream);
          byte[] byteArray = stream.toByteArray();
          return byteArray;
      }

2.Code which to insert the values into DB

  public void insertIntoImageTable( int companyid , String productname , String productdesc , byte[] bmp )
      {
          ContentValues values = new ContentValues();
            values.put(dataBaseHelper.COMPANY_ID, companyid);           
            values.put(dataBaseHelper.PRODUCT_NAME, productname);
            values.put(dataBaseHelper.PRODUCT_DESCRIPTION, productdesc);
            values.put(dataBaseHelper.PRODUCT_IMAGE, bmp);
            try
            {
                db.insert(dataBaseHelper.IMAGE_DATA, null, values);
            }
            catch( Exception e)
            {
                e.printStackTrace();
            }
      }

I get nullpointer exception.

Call from the function to put data into DB :

   insertIntoImageTable( 7 , productname[0] , productdesc[0] , barry);

All the three bits of code are in the same class file.

Edit: The stack trace is as below.

03-24 16:04:26.245: WARN/System.err(13255): java.lang.NullPointerException
03-24 16:04:26.265: WARN/System.err(13255):     at com.omkarsoft.ImagePortofolio.sqlQueries.insertIntoImageTable(sqlQueries.java:101)
03-24 16:04:26.275: WARN/System.err(13255):     at com.omkarsoft.ImagePortofolio.sqlQueries.upLoadtoDatabase(sqlQueries.java:118)
03-24 16:04:26.305: WARN/System.err(13255):     at com.omkarsoft.ImagePortofolio.ImageAdapter.<init>(ImageAdapter.java:58)
03-24 16:04:26.315: WARN/System.err(13255):     at com.omkarsoft.ImagePortofolio.imageGridView.onCreate(imageGridView.java:42)
03-24 16:04:26.335: WARN/System.err(13255):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-24 16:04:26.335: WARN/System.err(13255):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1611)
03-24 16:04:26.355: WARN/System.err(13255):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1663)
03-24 16:04:26.385: WARN/System.err(13255):     at android.app.ActivityThread.access$1500(ActivityThread.java:117)
03-24 16:04:26.385: WARN/System.err(13255):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:931)
03-24 16:04:26.415: WARN/System.err(13255):     at android.os.Handler.dispatchMessage(Handler.java:99)
03-24 16:04:26.415: WARN/System.err(13255):     at android.os.Looper.loop(Looper.java:123)
03-24 16:04:26.435: WARN/System.err(13255):     at android.app.ActivityThread.main(ActivityThread.java:3683)
03-24 16:04:26.445: WARN/System.err(13255):     at java.lang.reflect.Method.invokeNative(Native Method)
03-24 16:04:26.455: WARN/System.err(13255):     at java.lang.reflect.Method.invoke(Method.java:507)
03-24 16:04:26.475: WARN/System.err(13255):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
03-24 16:04:26.475: WARN/System.err(13255):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
03-24 16:04:26.505: WARN/System.err(13255):     at dalvik.system.NativeStart.main(Native Method)

It looks like your database is null or productname[0], productdesc[0] or barry` is null.

In general when saving large files on Android, you should save the file to disk (maybe the SD card if it's available) and then store the file URI in the database. The SQLite database on Android is not really designed for storing large content - you'll getter performance storing large files directly.

Have you instantiated your dataBaseHelper and checked the database is created?

Your getting a NullPointerException on the sqlQueries.java class line 101

Did you initialize your db ?

db.insert(dataBaseHelper.IMAGE_DATA, null, values);

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM