跳至主要内容

Android使用LitePal操作SQLite数据库(Kotlin)

MainActivity.kt---->

package com.example.fredric.litepaltest

import android.content.ContentValues
import android.support.v7.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import com.example.fredric.litepaltest.bean.Book
import org.litepal.LitePal

class MainActivity : AppCompatActivity() {



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

        var createDatabase = findViewById<Button>(R.id.create_database)
        createDatabase.setOnClickListener{
            LitePal.getDatabase()
        }

        var addData = findViewById<Button>(R.id.add_data)
        addData.setOnClickListener{
            var book = Book(null,"Dan Brown","The Da Vinci Code",16.96,454,"Unknown")
            book.save()
        }

        var updateData = findViewById<Button>(R.id.update_data)
        updateData.setOnClickListener{
//            var book = Book(null,"Dan Brown","The Lost Symbol",19.95,510,"Unknown")
//            book.save()
//            book.price = 10.99
//            book.save()

            var values = ContentValues()
            values.put("price",14.95)
            values.put("press","Anchor")
            LitePal.updateAll(Book::class.java,values,"name = ? and author = ?","The Lost Symbol","Dan Brown")
        }


        var deleteData = findViewById<Button>(R.id.delete_data)
        deleteData.setOnClickListener{
            LitePal.deleteAll(Book::class.java,"price < ?","15")
        }

        var queryData = findViewById<Button>(R.id.query_data)
        queryData.setOnClickListener{
            var books = LitePal.findAll(Book::class.java)
            for(book in books) {
                Log.d("MainActivity", "book name is :"+ book.name)
                Log.d("MainActivity", "book author is :"+ book.author)
                Log.d("MainActivity", "book pages is :"+book.pages)
                Log.d("MainActivity", "book price is :"+book.price)
                Log.d("MainActivity", "book press is :"+book.press)
            }
        }

    }
}



Book.kt-->

package com.example.fredric.litepaltest.bean

import org.litepal.crud.LitePalSupport

data class Book(var id: Int?,var author: String?,var name: String?,var price: Double?,var pages: Int?,var press: String?) :
        LitePalSupport()


Category.kt--->

package com.example.fredric.litepaltest.bean

import org.litepal.crud.LitePalSupport

data class Category(
        val id: Int?,
        val categoryName: String?,
        val categoryCode: Int?
) : LitePalSupport()


src/main/assets/litepal.xml--->

<?xml version="1.0" encoding="UTF-8" ?>
<litepal>
    <dbname value="BookStore"></dbname>
    <version value="2"></version>

    <list>
        <mapping class="com.example.fredric.litepaltest.bean.Book"></mapping>
        <mapping class="com.example.fredric.litepaltest.bean.Category"></mapping>
    </list>
</litepal>


activity_main.xml--->

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



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

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

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

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

    <Button
        android:id="@+id/query_data"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Query Data" />
</LinearLayout>



app/build.gradle---->

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:26.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'com.android.support.test:runner:1.0.2'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2'
    implementation 'org.litepal.android:core:2.0.0'
}


运行效果:





评论