疯狂的狐狸gg 2022-04-10 13:02 采纳率: 0%
浏览 120

Android studio 使用SQLite存储数据失败

练习郭神的第一行代码3的SQLite部分,存储数据为空,请帮忙看看哪里出问题了

main activity 中的代码:


lass MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
        val dbHelper=MyDatabaseHelper(this,"BookStore.db",2)
        val createDatabase:Button=findViewById(R.id.createDatabase)
        val addData:Button=findViewById(R.id.addData)
        createDatabase.setOnClickListener {
            dbHelper.writableDatabase
        }
        addData.setOnClickListener {
            val db=dbHelper.writableDatabase
            val values1=ContentValues().apply {
                //开始准备第一条数据
                put("name","The Da Vinci Code")
                put("author","Dan Brown")
                put("pages",454)
                put("price",163)
            }
            db.insert("Book",null,values1)//插入第一条数据
            val values2=ContentValues().apply {
                //开始准备第二条数据
                put("name","good father")
                put("author","Claus")
                put("pages",454)
                put("price",1)
            }
            db.insert("Book",null,values2)//插入第二条数据
        }
    }
}

mydatabase类中的代码:

class MyDatabaseHelper(val context: Context,name:String,version: Int):
    SQLiteOpenHelper (context,name,null,version){
        private val createBook="create table Book("+
                "id integer primary key autoincrement,"+
                "author text,"+
                "price real"+
                "pages integer,"+
                "name text)"
    private val createCategory="create table Category("+
            "id integer primary key autoincrement,"+
            "category_name text,"+
            "category_code integer)"


    override fun onCreate(db: SQLiteDatabase) {
        db.execSQL(createBook)
        db.execSQL(createCategory)
        Toast.makeText(context,"Create succeeded",Toast.LENGTH_SHORT).show()
    }

    override fun onUpgrade(db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
        db.execSQL("drop table if exists Book")
        db.execSQL("drop table if exists Category")
        onCreate(db)
    }
}

页面布局代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">


    <Button
        android:id="@+id/createDatabase"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Create Database"/>

    <Button
        android:id="@+id/addData"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Add Data"/>





</LinearLayout>

运行后不报错,BOOK创建成功,用DB navigator 测试后,没有数据

img

  • 写回答

2条回答 默认 最新

  • 不会写代码的猴子 Android领域优质创作者 2022-04-10 14:36
    关注

    img


    这两个sql语句你打印出来看看,是不是没有空格导致关键字都连在一起了

    评论

报告相同问题?

问题事件

  • 创建了问题 4月10日

悬赏问题

  • ¥15 #MATLAB仿真#车辆换道路径规划
  • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
  • ¥15 数据可视化Python
  • ¥15 要给毕业设计添加扫码登录的功能!!有偿
  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘