Android Studio中SQLite的使用:插入和读取图片的操作方法
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编码转换为文本存储。读取时,先将其解码回字节流格式。
评论已关闭