如何在DB中使用ActiveAndroid存储图像

时间:2015-07-21 08:22:35

标签: android sqlite orm activeandroid

使用activeandoid存储值的My My Activity类代码...我已将图像文件转换为以下代码中的字节..但它不存储在Db中......所有其他值都存储了

case R.id.notVerified:
                    ActiveAndroid.beginTransaction();
                    try {
                        c.setName(Ename.getText().toString());
                        c.setEmail(Eemail.getText().toString());
                        c.setMemo(Eemail.getText().toString());
                        c.setPhone(Ephone.getText().toString());
                        c.setPhoto("user.png");
                        String s = new String(byteArray);

                        Toast.makeText(getActivity(), c.getImage().toString() ,Toast.LENGTH_LONG).show();
                        c.setImage(byteArray);
                        c.setTitle(ETitle.getText().toString());
                        c.save();
                        ActiveAndroid.setTransactionSuccessful();
                        Toast.makeText(getActivity(), "Contact Added",Toast.LENGTH_LONG).show();
                    } finally {
                        ActiveAndroid.endTransaction();
                    }

                    break;

这适用于将图像转换为字节

if (requestCode == CAMERA_REQUEST) {
            Uri selectedImage = data.getData();
            String[] filePathColumn = {MediaStore.Images.Media.DATA};

            Cursor cursor = getActivity().getContentResolver().query(selectedImage,
                    filePathColumn, null, null, null);
            cursor.moveToFirst();

            int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
            String filePath = cursor.getString(columnIndex);
            Eimgname.setText(filePath);
            cursor.close();

            Bitmap yourSelectedImage = BitmapFactory.decodeFile(filePath);
            ByteArrayOutputStream stream = new ByteArrayOutputStream();
            yourSelectedImage.compress(Bitmap.CompressFormat.PNG, 100, stream);
            byteArray = stream.toByteArray();
            c.setImage(byteArray);
        }

2 个答案:

答案 0 :(得分:0)

从性能视图来看,它更有用,可以将列创建为字符串并从磁盘或Web获取映像。和AA支持保存字节数组可能你的实体类有问题。 并且不要忘记定义自定义type serializer可以帮助您。

答案 1 :(得分:0)

ActiveAndroid还使用queries提供自定义SQL SQLiteUtils class。执行SQL有两种方法,即“execSql”和“rawQuery”。第一个提供没有结果queries,而第二个提供queries返回结果。在清单编号中。 12您可以找到methods的使用示例。

SQLiteUtils.execSql("DELETE FROM Prelegents where id = ?", new String[]{"1"});

List prelegents =
    SQLiteUtils.rawQuery(PrelegentDAO.class, "SELECT * from Prelegents where id = ?", new String[]{"1"});

SEE THIS LINK