How to insert image and retrieve in sqlite database Android Studio.
How to insert image and retrieve in sqlite database Android Studio.
Source Code
class MainActivity : AppCompatActivity() {
var desFile: File? = null
var myFile: File? = null
var db: SQLiteDatabase? = null
protected lateinit var xx: ByteArray
private val stream = ByteArrayOutputStream()
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
createDatabase()
}
fun createDb(view: View) {
createDatabase()
}
fun createDatabase(){
val folder = File(getExternalFilesDir(Environment.DIRECTORY_DOCUMENTS).toString()+”/Database”)
if (!folder.exists()) {
folder.mkdir()
} else {
//Toast.makeText(this, folder.absolutePath.toString(), Toast.LENGTH_LONG).show()
}
myFile = File(folder,”Test.db”)
db = SQLiteDatabase.openOrCreateDatabase(myFile!!.absolutePath,null,null)
CreateTable()
@SuppressLint(“Recycle”)
var cursor =
db!!.rawQuery(“SELECT name FROM sqlite_master WHERE type=’table’ “, null)
if (cursor.getCount() != 0)
{
Toast.makeText(this,”Conncted To DataBase)”, Toast.LENGTH_LONG).show()
}
}
fun CreateTable(){
var create_table : String
create_table =
“CREATE TABLE IF NOT EXISTS item (itmid INTEGER PRIMARY KEY AUTOINCREMENT, classid INTEGER, itmname TEXT,” +
“rate REAL,itmunit TEXT, itmimg BLOB) ”
db!!.execSQL(create_table)
create_table =
“CREATE TABLE IF NOT EXISTS category (catid INTEGER PRIMARY KEY AUTOINCREMENT, catname TEXT, classid INTEGER)”
db!!.execSQL(create_table)
create_table =
“CREATE TABLE IF NOT EXISTS ledgers (ldid INTEGER PRIMARY KEY AUTOINCREMENT, classid INTEGER, ldname TEXT, ldaddrs TEXT, ldstate TEXT,” +
” mobileno TEXT opbl REAL)”
db!!.execSQL(create_table)
}
fun InsertData(view: View){
val image = xx
var itmName : String = binding.txtItmname.text.toString()
var itmRate : Double = binding.txtRate.text.toString().toDouble()
var itmUnit : String = binding.txtUnit.text.toString()
val values = ContentValues()
values.put(“itmname”,itmName)
values.put(“rate”, itmRate)
values.put(“itmunit”, itmUnit)
values.put(“itmimg”, image)
db!!.insert(“item”,null,values)
binding.txtItmname.setText(“”)
Toast.makeText(this, “Data Inserted”, Toast.LENGTH_SHORT).show()
}
fun UpdateData(view: View){
val itemid = binding.edtid.text.toString().toInt()
val image = xx
var itmName : String = binding.txtItmname.text.toString()
var itmRate : Double = binding.txtRate.text.toString().toDouble()
var itmUnit : String = binding.txtUnit.text.toString()
val values = ContentValues()
values.put(“itmname”,itmName)
values.put(“rate”, itmRate)
values.put(“itmunit”, itmUnit)
values.put(“itmimg”, image)
values.put(“itmid”,itemid)
db!!.update(“item”, values, “itmid”, null)
binding.txtItmname.setText(“”)
Toast.makeText(this, “Data Updated”, Toast.LENGTH_SHORT).show()
}
fun DeleteData(view: View){
val sqlcmd =
“DELETE FROM ITEM WHERE (itmid = 2 )”
db!!.execSQL(sqlcmd)
binding.txtItmname.setText(“”)
Toast.makeText(this, “Data Deleted”, Toast.LENGTH_SHORT).show()
}
fun showData(view: View) {
val itmid = binding.edtid.text.toString().toInt()
val cursor = db!!.rawQuery(
“SELECT itmid, itmname, rate, itmunit,itmimg FROM item WHERE (itmid = $itmid )”,
null
)
if (cursor.count != 0) {
cursor.moveToFirst()
binding.txtItmname .setText(cursor.getString(1).toString())
binding.txtRate .setText(cursor.getString(2).toString())
binding.txtUnit .setText(cursor.getString(3).toString())
if(cursor.getBlob((4)) != null){
val x = cursor.getBlob(4)
xx = x
val bmp = BitmapFactory.decodeByteArray(x,0,x.size)
binding.pic.setImageBitmap(bmp)
}
}
}
fun insertImg(view: View?) {
var myfileintent = Intent(Intent.ACTION_GET_CONTENT)
myfileintent.setType(“image/*”)
ActivityResultLauncher.launch(myfileintent)
}
}