Как вставить изображение в базу данных sqlite? - PullRequest
2 голосов
/ 24 марта 2011

Я пробовал следующий код:

1.Код для преобразования растрового изображения в байтовый массив:

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

2.Код для вставки значений в БД

  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();
            }
      }

Я получаю исключение nullpointer.

Вызов функции для помещения данных в БД:

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

Все три бита кода находятся в одном файле класса.

Редактировать: трассировка стека, как показано ниже.

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)

Ответы [ 3 ]

1 голос
/ 24 марта 2011

Похоже, ваша база данных равна нулю или productname[0], productdesc [0] or barry` равно нулю.

Как правило, при сохранении больших файлов на Android вы должны сохранить файл на диск (может быть, на SD-карту, если она доступна), а затем сохранить URI файла в базе данных. База данных SQLite на Android на самом деле не предназначена для хранения большого контента - вы получите производительность, сохраняя большие файлы напрямую.

0 голосов
/ 24 марта 2011

Вы инициализировали свою базу данных?

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

0 голосов
/ 24 марта 2011

Вы создали свой экземпляр dataBaseHelper и проверили, создана ли база данных?

Вы получаете исключение NullPointerException в строке класса sqlQueries.java 101

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...