【问题标题】:saving image into SQLITE?将图像保存到 SQLITE 中?
【发布时间】:2012-02-16 18:41:52
【问题描述】:

我应该使用哪种数据类型在 sqlLite 数据库表中存储图像??

以下是我的尝试:

@Override
public void onCreate(SQLiteDatabase db) {
    // TODO Auto-generated method stub
    db.execSQL("CREATE TABLE" + MP_TABLE_NAME + " ( " +
            BaseColumns._ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
            " NAME TEXT, " +
            " LAT REAL, "+
            " LNG REAL,"+
            ");"
              );

}

【问题讨论】:

  • 您应该将图像存储在 SD 卡上,并在数据库中存储图像的路径。
  • 不容易将图像保存到内部/外部存储器并在数据库中保存一些对它们的引用?

标签: android sqlite


【解决方案1】:

试试这个..

使用 BLOB 列创建表:

CREATE TABLE storedImages (_id INTEGER PRIMARY KEY, myImage BLOB);

使用 HTTP 下载图像并将其存储在您的表中:

DefaultHttpClient mHttpClient = new DefaultHttpClient();  
HttpGet mHttpGet = new HttpGet("your image url");  
HttpResponse mHttpResponse = mHttpClient.execute(mHttpGet);  
if (mHttpResponse.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {  
    HttpEntity entity = mHttpResponse.getEntity();  
    if (entity != null) {  
        // insert to database  
        ContentValues values = new ContentValues();  
        values.put(MyBaseColumn.MyTable.ImageField, EntityUtils.toByteArray(entity));  
        getContentResolver().insert(MyBaseColumn.MyTable.CONTENT_URI, values);  
    }
 }

将 BLOB 加载到 ImageView 中:

 ImageView myImage = (ImageView) findViewById(R.id.myImage);
 byte[] bb = cursor.getBlob(cursor.getColumnIndex(MyBaseColumn.MyTable.ImageField));
 myImage.setImageBitmap(BitmapFactory.decodeByteArray(bb, 0, bb.length));

【讨论】:

    【解决方案2】:

    请参阅SQLite documentation on datatypes。

    您可能需要BLOB 类型,也称为“二进制 blob”或“二进制长对象”。请注意,在 SQLite 数据库中存储非常大的内容不一定是一个好主意 - 如果您可以管理图像,通常最好将图像存储在文件系统中。

    【讨论】:

      【解决方案3】:

      将图像保存到 Sqlite 是个坏主意。您应该将其路径保存到 sqlite。与文本信息相比,图像的尺寸很大。

      从 sqlite 保存和检索图像会很困难。

      因此,我建议您将图像存储在外部文件夹中,并将其路径存储到 sqlite 数据库中。

      【讨论】:

      • 你能给我一个如何将图像保存到文件夹中的例子吗??
      • 请举个例子?
      猜你喜欢
      • 2010-12-31
      • 2020-02-10
      • 1970-01-01
      • 1970-01-01
      • 2012-12-16
      • 2012-01-11
      • 2020-11-30
      • 1970-01-01
      • 2011-08-30
      相关资源
      最近更新 更多