WorldofCode Ответов: 0

Проблема с базой данных номеров


Я хочу вставить некоторое значение, полученное из моей транзакции, в базу данных комнаты .

Я использую метод Insert для сохранения данных в базе данных комнат, а также @query для получения всех данных из базы данных .

Но проблема в том, что данные не сохраняются, и когда я переключаюсь между моими экранами, нет никаких признаков данных .

Код :

мой стол
@Entity (tableName = "credit")
data class Credit(

    @PrimaryKey(autoGenerate = true)
    val id : Int? ,
    var credittext: Long

)

мое Дао :
        //credit table dao

        @Query("SELECT * FROM credit ")
        fun creditall () : LiveData<Credit>


        @Insert(onConflict = OnConflictStrategy.REPLACE)
        suspend fun insertcredit (model : Credit)


        @Query("DELETE FROM credit")
       suspend fun deletecredit ()


}

мое хранилище :
    // repository for Credit

    fun getallcredit() = db.GetDao().creditall()

    suspend fun deletallcredit() = db.GetDao().deletecredit()

    suspend fun insertcredit(model : Credit) = db.GetDao().insertcredit(model)


}

Модель Представления Номер :
// this is for credit tb


fun creditall() = repository.getallcredit()


fun deletecredit() = CoroutineScope(Dispatchers.IO).launch {


    repository.deletallcredit()

}


fun insertcredit(model: Credit) = CoroutineScope(Dispatchers.IO).launch {


    repository.insertcredit(model)


}

База данных моей комнаты :
package com.example.ahwazfriut.Room

import android.content.Context
import androidx.room.Database
import androidx.room.Room
import androidx.room.RoomDatabase


@Database(entities = [RoomTables::class , Credit::class], version = 1, exportSchema = false)


abstract class DataBaseRoom : RoomDatabase() {

    abstract fun GetDao(): DaoCart


    companion object {
        @Volatile
        private var instance: DataBaseRoom? = null

        private val lock = Any()

        operator fun invoke(context: Context) = instance
            ?: synchronized(lock) {
                instance
                    ?: makeDatabase(
                        context
                    ).also {
                        instance = it
                    }
            }

        private fun makeDatabase(context: Context) = Room.databaseBuilder(
            context.applicationContext,
            DataBaseRoom::class.java,
            "name"
        ).build()
    }

}

и это моя деятельность, где я вставляю и получаю данные :
class Payment_Activity : AppCompatActivity() {

    lateinit var viewmodel: ViewModelRoom

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.payment_activity)


 paymentVerification()

}
 private fun paymentVerification() {


        val textmoney: TextView = findViewById(R.id.money)
        val data: Uri? = intent.data

        val getpurchase = ZarinPal.getPurchase(this)


        getpurchase.verificationPayment(data) {

                isPaymentSuccess, refID, paymentRequest ->

            if (isPaymentSuccess) {


                val database = DataBaseRoom(this)
                val repositoryCart = RepositoryCart(database)
                val factoryRoom = FactoryRoom(repositoryCart)

                viewmodel = ViewModelProvider(ViewModelStoreOwner { ViewModelStore() } , factoryRoom).get(ViewModelRoom::class.java)

                viewmodel.insertcredit(Credit(null , paymentRequest.amount))

                viewmodel.creditall().observe(this, Observer {

                    if (it != null) {
                      
                        textmoney.text = it.credittext.toString()


                    }

                })
}

Спасибо за помощь.

Что я уже пробовал:

Я так стараюсь, но все равно не получаю решения.

David Crow

Это только мне кажется, или там есть ссылки на таблицы "номер" и "кредит"? Вы написали весь вышеперечисленный код?

WorldofCode

да я это сделал

David Crow

И вы прошли через код, используя отладчик?

Gerry Schmitz

Вы начинаете с "записи" одной части данных, а затем добавляете все остальное. Проблема заключается в вашем "уровне доступа к данным", который, как можно было бы догадаться, является "БД."

0 Ответов