Android Studio中SQLite的使用:插入和读取图片的操作方法
    		       		warning:
    		            这篇文章距离上次修改已过422天,其中的内容可能已经有所变动。
    		        
        		                
                
import android.content.Context
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper
import android.util.Base64
 
class DatabaseHelper(context: Context) : SQLiteOpenHelper(context, "DatabaseName.db", null, 1) {
 
    override fun onCreate(db: SQLiteDatabase) {
        val createTableStatement = "CREATE TABLE IF NOT EXISTS ImageTable " +
                "(id INTEGER PRIMARY KEY, image BLOB)"
        db.execSQL(createTableStatement)
    }
 
    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
        // Implement schema migration logic if needed
    }
 
    fun insertImage(image: ByteArray) {
        val db = writableDatabase
        val values = ContentValues()
        values.put("image", image)
        db.insert("ImageTable", null, values)
        db.close()
    }
 
    fun readImage(id: Int): ByteArray? {
        val db = readableDatabase
        val query = "SELECT * FROM ImageTable WHERE id = ?"
        val cursor = db.rawQuery(query, arrayOf(id.toString()))
        var image: ByteArray? = null
        if (cursor.moveToFirst()) {
            image = cursor.getBlob(cursor.getColumnIndex("image"))
        }
        cursor.close()
        db.close()
        return image
    }
}
 
// 使用示例
val dbHelper = DatabaseHelper(context)
val imageBytes = Base64.decode(imageBase64, Base64.DEFAULT)
dbHelper.insertImage(imageBytes)
val savedImageBytes = dbHelper.readImage(1)这个代码示例展示了如何在Android Studio中使用SQLite数据库来存储和读取图片。首先,我们创建了一个DatabaseHelper类,继承自SQLiteOpenHelper。在onCreate方法中,我们创建了一个名为ImageTable的表,其中包含一个整数ID列和一个BLOB类型的图片列。insertImage方法用于插入图片,而readImage方法用于读取指定ID的图片。图片以字节流的形式存储,使用Base64编码转换为文本存储。读取时,先将其解码回字节流格式。
评论已关闭