2014-07-12 3 views
0

이미지에 적합한 필드는 다음과 같습니다. varchar 또는 얼룩 및 왜?어떤 필드가 이미지에 적합합니다. varchar 또는 blob. sqlite

나는 이미지를 변환하려면 다음 코드를 사용하고 있습니다 :

public String getStringFromBitmap(Bitmap bitmap) { 
     ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
     bitmap.compress(CompressFormat.JPEG, 70, stream); 
     return Base64.encodeToString(stream.toByteArray(), Base64.NO_WRAP); 
    } 
    public Bitmap getBitmapFromString(String imageString) { 
     byte[] decodedString = Base64.decode(imageString, Base64.NO_WRAP); 
     Bitmap decodedByte = BitmapFactory.decodeByteArray(decodedString, 0, 
       decodedString.length); 
     return decodedByte; 
    } 

내 필드는 VARCHAR입니다. 이게 그 길인가? 아니면 내가 내 방식

+0

안드로이드 비트 맵 sqlite 당신이 최고의 솔루션을 찾을 수 – pskink

+2

'varchar'는 문자 데이터를위한 것이며,'blob'는 바이너리 데이터 (blob = binary large object)입니다. 이미지가 이진 데이터이기 때문에 ... – Henry

+0

db에서 이미지를 저장하려고 할 때 오류가 발생하여 2M 한도의 창이 발생했습니다. – Aleksandr

답변

4

어느 하나가 좋은 다른보다 더 나은 것 같다.

많은 양의 데이터를 가져올 때 이미지 데이터에 많은 공간이 필요하고 Android sqlite 래퍼 (CursorWindow)가 제대로 작동하지 않습니다.

대신 파일 시스템에 바이너리 데이터를 저장하고 데이터베이스에 경로 만 저장하십시오.

0

SQLite는에는 VARCHAR이 (정확히)이없는 변경해야합니까! (SQLite DataType)

NULL을. 값은 NULL 값입니다.

정수. 값은 부호가있는 정수이며 값의 크기에 따라 1, 2, 3, 4, 6 또는 8 바이트로 저장됩니다.

REAL. 값은 8 바이트 IEEE 부동 소수점 숫자로 저장된 부동 소수점 값입니다.

TEXT. 값은 데이터베이스 문자열 (UTF-8, UTF-16BE 또는 UTF-16LE)을 사용하여 저장된 텍스트 문자열입니다.

BLOB. 이 값은 입력 된 그대로 저장되는 데이터 블록입니다.

는 BLOB 이미지

+0

SQLite는 데이터 유형을 강제하지 않으며, 힌트 만 표시하고 방법을 알면 캐스팅 할 수도 있습니다. http://sqlite.org/faq.html#q3 –

+0

@ikkuh 예, 알고 있습니다. sqlite는 SQLite와 다른 데이터베이스 엔진 간의 호환성을 극대화하기 위해 일반적인 dataType 이름을 변환합니다. 내 답변에는 varchar ("정확하게").... –

관련 문제