Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/183.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法从Android SQLite检索保存的数据_Android_Database_Sqlite_Kotlin_Database Connection - Fatal编程技术网

无法从Android SQLite检索保存的数据

无法从Android SQLite检索保存的数据,android,database,sqlite,kotlin,database-connection,Android,Database,Sqlite,Kotlin,Database Connection,我刚开始编程,开始了大约一个月的时间。我已经创建了一个数据库来存储ATM卡的详细信息,我正在尝试检索它。然而,这并没有发生 我可以看到,在保存卡片详细信息时正在执行toast消息-“(卡片已添加)”。但是当我打开应用程序时,它应该从数据库中获取数据。现在,它给出0作为计数 我正在调用来自主活动的数据 我也试图通过清除应用程序数据来删除数据库 这是我的main活动 class MainActivity : AppCompatActivity() { companion object {

我刚开始编程,开始了大约一个月的时间。我已经创建了一个数据库来存储ATM卡的详细信息,我正在尝试检索它。然而,这并没有发生

我可以看到,在保存卡片详细信息时正在执行toast消息-“(卡片已添加)”。但是当我打开应用程序时,它应该从数据库中获取数据。现在,它给出0作为计数

我正在调用来自主活动的数据

我也试图通过清除应用程序数据来删除数据库

这是我的
main活动

class MainActivity : AppCompatActivity() {

    companion object {
        lateinit var dbHander:DBHandler
    }

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        dbHander=DBHandler(this, null, null, 1)
        viewCards()
        floatingActionButton.setOnClickListener {
        val intent= Intent(this, NewCardRegistration::class.java)
            startActivity(intent)
        }
    }

    fun viewCards() {
        val cardList= dbHander.getCards(this)
        val adapter=Adapters(this, cardList)
        val rv: RecyclerView= rv as RecyclerView
        rv.layoutManager=LinearLayoutManager(this, LinearLayout.VERTICAL, false)
        rv.adapter=adapter
    }

    override fun onResume() {
        viewCards()
        super.onResume()
    }
}
以及
DBHandler

class DBHandler(context: Context, name:String?, factory: SQLiteDatabase.CursorFactory?, version:Int):
        SQLiteOpenHelper(context, DATABASE_NAME, factory, DATABASE_Version) {


    companion object {

        val DATABASE_NAME = "MyCards.db"
        val DATABASE_Version = 1
        val CARDS_TABLE_NAME = "CARDS"
        val COLUMN_CARD_ID = "CARD_ID"
        val COLUMN_BANK_NAME = "BANK_NAME"
        val COLUMN_CARD_HOLDER_NAME = "NAME"
        val COLUMN_CARD_VALIDITY = "CARD_VALIDITY"

    val COLUMN_CARD_CVV = "CARD_CVV"
        val COLUMN_CARD_NUMBER = "CARD_NUMBER"
        val COLUMN_CUSTOMER_CARE_NUMBER = "CUSTOMER_CARE_NUMBER"

    }

    override fun onCreate(db: SQLiteDatabase?) {
        val CREATE_CARD_TABLE: String = ("CREATE TABLE $CARDS_TABLE_NAME(" +
                "$COLUMN_CARD_ID INTEGER PRIMARY KEY AUTOINCREMENT," +
                "$COLUMN_BANK_NAME," +
                "$COLUMN_CARD_CVV," +
                "$COLUMN_CARD_VALIDITY," +
                "$COLUMN_CARD_NUMBER" +
                "$COLUMN_CUSTOMER_CARE_NUMBER" +
                "$COLUMN_CARD_HOLDER_NAME)")

        db?.execSQL(CREATE_CARD_TABLE)
    }

    override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
    }

    fun getCards(mCtx: Context): ArrayList<Cards> {
        val query = "Select * from $CARDS_TABLE_NAME"
        val db = this.readableDatabase
        val cursor = db.rawQuery(query, null)
        val cardsArray = ArrayList<Cards>()

        if (cursor.count == 0)
            Toast.makeText(mCtx, "No records Found", Toast.LENGTH_LONG).show()
        else {
            while (cursor.moveToNext()) {
                val cards   = Cards()
                cards.cardID = cursor.getInt(cursor.getColumnIndex(COLUMN_CARD_ID))
                cards.bankName = cursor.getString(cursor.getColumnIndex(COLUMN_BANK_NAME))
                cards.cardCVV = cursor.getInt(cursor.getColumnIndex(COLUMN_CARD_CVV))
                cards.cardHolderName = cursor.getString(cursor.getColumnIndex(COLUMN_CARD_HOLDER_NAME))
                cards.validity = cursor.getString(cursor.getColumnIndex(COLUMN_CARD_VALIDITY))
                cards.ccNumber=cursor.getDouble(cursor.getColumnIndex(COLUMN_CUSTOMER_CARE_NUMBER))
                cardsArray.add(cards)
            }
            Toast.makeText(mCtx, "${cursor.count} Records Found", Toast.LENGTH_LONG).show()
        }

        cursor.close()
        db.close()
        return cardsArray
    }

    fun addCard(context: Context, cards: Cards) {
        val values = ContentValues()
        values.put(COLUMN_CARD_VALIDITY, cards.validity)
        values.put(COLUMN_CARD_HOLDER_NAME, cards.cardHolderName)
        values.put(COLUMN_CARD_CVV, cards.cardCVV)
        values.put(COLUMN_BANK_NAME, cards.bankName)
        values.put(COLUMN_CARD_NUMBER, cards.cardNumber)
        values.put(COLUMN_CUSTOMER_CARE_NUMBER, cards.ccNumber)

        val db = this.writableDatabase

        try {
            db.insert(CARDS_TABLE_NAME,null,values)
            Toast.makeText(context, "Card Added", Toast.LENGTH_SHORT).show()
        } catch (e: Exception) {

            Toast.makeText(context, e.message, Toast.LENGTH_SHORT).show()
        }

        db.close()
    }
}
您在这里的列之间缺少了一些
逗号。因此,该表没有您认为的列

try {
    db.insert(CARDS_TABLE_NAME,null,values)
    Toast.makeText(context, "Card Added", Toast.LENGTH_SHORT).show()
} catch (e: Exception) {

    Toast.makeText(context, e.message, Toast.LENGTH_SHORT).show()
}
insert()
不会引发错误。它返回-1表示错误,如果使用
insertOrThrow()
,则会出现一个异常,显示“未知列”

如何修复:

  • 修复
    onCreate()
    SQL并添加缺少的逗号
  • insert()
    更改为
    insertOrThrow()
    ,这样您的祝酒就可以按预期在那里进行了
  • 卸载应用程序或清除应用程序的数据以删除旧数据库,并再次运行
    onCreate()
您在这里的列之间缺少了一些
逗号。因此,该表没有您认为的列

try {
    db.insert(CARDS_TABLE_NAME,null,values)
    Toast.makeText(context, "Card Added", Toast.LENGTH_SHORT).show()
} catch (e: Exception) {

    Toast.makeText(context, e.message, Toast.LENGTH_SHORT).show()
}
insert()
不会引发错误。它返回-1表示错误,如果使用
insertOrThrow()
,则会出现一个异常,显示“未知列”

如何修复:

  • 修复
    onCreate()
    SQL并添加缺少的逗号
  • insert()
    更改为
    insertOrThrow()
    ,这样您的祝酒就可以按预期在那里进行了
  • 卸载应用程序或清除应用程序的数据以删除旧数据库,并再次运行
    onCreate()
try {
    db.insert(CARDS_TABLE_NAME,null,values)
    Toast.makeText(context, "Card Added", Toast.LENGTH_SHORT).show()
} catch (e: Exception) {

    Toast.makeText(context, e.message, Toast.LENGTH_SHORT).show()
}