欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

安卓开发笔记(十三):SQLite数据库储存(下)数据的增添,更改,删除,查询

程序员文章站 2022-05-18 23:16:05
SQLite数据库存储(下) 1.增添数据 对于添加数据的话我们只需要在主活动当中import新的包以及在主活动当中写上适当的代码就可以了,不需要在我们之前创建新的类当中书写新的代码。现在的主活动代码如下: 这样我们就分别向book表以及category表当中增添了数据了。当然我们也可以在这段代码当 ......
 

sqlite数据库存储(下)

1.增添数据

对于添加数据的话我们只需要在主活动当中import新的包以及在主活动当中写上适当的代码就可以了,不需要在我们之前创建新的类当中书写新的代码。现在的主活动代码如下:

package com.example.lenovo.studyittwo;


import android.content.intentfilter;
import android.content.sharedpreferences;
import android.support.v7.app.appcompatactivity;
import android.os.bundle;
import android.view.view;
import android.widget.button;
import android.content.*;
import android.content.context;
import android.database.sqlite.sqlitedatabase;
import android.database.sqlite.sqliteopenhelper;
import android.widget.toast;

public class mainactivity extends appcompatactivity {
    private mydatabasehelper dbhelper;

    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);
        // 构建mydatabasehelper对象,指定数据库名为"bookstore.db、版本号为1,版本号改为2之后则会直接
        dbhelper = new mydatabasehelper(this, "bookstore.db", null, 2);
        button btn_create_database = (button) findviewbyid(r.id.creat);
        btn_create_database.setonclicklistener(new view.onclicklistener() {
            @override
            public void onclick(view view) {
                // 创建或打开一个现有的数据库(已存在则打开,否则创建一个新的)
                dbhelper.getwritabledatabase();
            }
        });
        button adddata= (button)findviewbyid(r.id.add);
        adddata.setonclicklistener(new view.onclicklistener() {
            @override
            public void onclick(view view) {
               sqlitedatabase db=dbhelper.getwritabledatabase();
               contentvalues values=new contentvalues();
               values.put("name","the fuck code");
               values.put("autuor","fuckers");
               db.insert("book",null,values);
               values.clear();
               values.put("name","the fuck code");
               values.put("autuor","fuckers");
               db.insert("category",null,values);
               values.clear();

            }
        });



    }}

这样我们就分别向book表以及category表当中增添了数据了。当然我们也可以在这段代码当中看到我们新建了一个按钮,用于演示我们数据是否已经插入成功,下面是我们新的主活动界面的代码:

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    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/creat"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="create database"/>
   <button
       android:id="@+id/add"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="add data"/>

</linearlayout>

很自然地运用了一个线性的垂直布局,只是增加了一个button而已。

2.更改数据

为了方便研究更改数据,我们在布局下加入更改数据的按钮,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    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/creat"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="create database"/>
   <button
       android:id="@+id/add"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="add data"/>
   <button
       android:id="@+id/updata"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="updata data"/>

</linearlayout>

这里上主活动的代码,我们只是在第三个按钮处将代码做了适当的添加,这样就可以进行数据的更改了:

package com.example.lenovo.studyittwo;


import android.content.intentfilter;
import android.content.sharedpreferences;
import android.support.v7.app.appcompatactivity;
import android.os.bundle;
import android.view.view;
import android.widget.button;
import android.content.*;
import android.content.context;
import android.database.sqlite.sqlitedatabase;
import android.database.sqlite.sqliteopenhelper;
import android.widget.toast;

public class mainactivity extends appcompatactivity {
    private mydatabasehelper dbhelper;

    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);
        // 构建mydatabasehelper对象,指定数据库名为"bookstore.db、版本号为1,版本号改为2之后则会直接
        dbhelper = new mydatabasehelper(this, "bookstore.db", null, 2);
        button btn_create_database = (button) findviewbyid(r.id.creat);
        btn_create_database.setonclicklistener(new view.onclicklistener() {
            @override
            public void onclick(view view) {
                // 创建或打开一个现有的数据库(已存在则打开,否则创建一个新的)
                dbhelper.getwritabledatabase();
            }
        });
        button adddata= (button)findviewbyid(r.id.add);
        adddata.setonclicklistener(new view.onclicklistener() {
            @override
            public void onclick(view view) {
               sqlitedatabase db=dbhelper.getwritabledatabase();
               contentvalues values=new contentvalues();
               values.put("name","the fuck code");
               values.put("autuor","fuckers");
               db.insert("book",null,values);
               values.clear();
               values.put("name","the fuck code");
               values.put("autuor","fuckers");
               db.insert("category",null,values);
               values.clear();

            }
        });
        button updatadata= (button)findviewbyid(r.id.updata);
        updatadata.setonclicklistener(new view.onclicklistener() {
            @override
            public void onclick(view view) {
               sqlitedatabase db=dbhelper.getwritabledatabase();
               contentvalues values=new contentvalues();
               values.put("name","我是傻逼\n");
               db.update("book",values,"name=?",new string[]{"the fuck code"});

            }
        });



    }}

 

3.删除数据

还是同样的套路,我们直接在主界面上加入第四个删除数据的按钮:

 

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    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/creat"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="create database"/>
   <button
       android:id="@+id/add"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="add data"/>
   <button
       android:id="@+id/updata"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="updata data"/>
   <button
       android:id="@+id/deletedata"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="delete data"/>

</linearlayout>

 

然后写入主活动的代码:

package com.example.lenovo.studyittwo;


import android.content.intentfilter;
import android.content.sharedpreferences;
import android.support.v7.app.appcompatactivity;
import android.os.bundle;
import android.view.view;
import android.widget.button;
import android.content.*;
import android.content.context;
import android.database.sqlite.sqlitedatabase;
import android.database.sqlite.sqliteopenhelper;
import android.widget.toast;

public class mainactivity extends appcompatactivity {
    private mydatabasehelper dbhelper;

    @override
    protected void oncreate(bundle savedinstancestate) {
        super.oncreate(savedinstancestate);
        setcontentview(r.layout.activity_main);
        // 构建mydatabasehelper对象,指定数据库名为"bookstore.db、版本号为1,版本号改为2之后则会直接
        dbhelper = new mydatabasehelper(this, "bookstore.db", null, 2);
        button btn_create_database = (button) findviewbyid(r.id.creat);
        btn_create_database.setonclicklistener(new view.onclicklistener() {
            @override
            public void onclick(view view) {
                // 创建或打开一个现有的数据库(已存在则打开,否则创建一个新的)
                dbhelper.getwritabledatabase();
            }
        });
        button adddata= (button)findviewbyid(r.id.add);
        adddata.setonclicklistener(new view.onclicklistener() {
            @override
            public void onclick(view view) {
               sqlitedatabase db=dbhelper.getwritabledatabase();
               contentvalues values=new contentvalues();
               values.put("name","the fuck code");
               values.put("autuor","fuckers");
               db.insert("book",null,values);
               values.clear();
               values.put("name","the fuck code");
               values.put("autuor","fuckers");
               db.insert("category",null,values);
               values.clear();

            }
        });
        button updatadata= (button)findviewbyid(r.id.updata);
        updatadata.setonclicklistener(new view.onclicklistener() {
            @override
            public void onclick(view view) {
               sqlitedatabase db=dbhelper.getwritabledatabase();
               contentvalues values=new contentvalues();
               values.put("name","我是傻逼\n");
               db.update("book",values,"name=?",new string[]{"the fuck code"});//如果名字等于这个就可以进行更新了

            }
        });
        button deletedata= (button)findviewbyid(r.id.deletedata);
        deletedata.setonclicklistener(new view.onclicklistener() {
            @override
            public void onclick(view view) {
               sqlitedatabase db=dbhelper.getwritabledatabase();
               contentvalues values=new contentvalues();
               values.put("name","我是傻逼\n");
               db.delete("book","name=?",new string[]{"the fuck code"});//如果名字等于这个就可以直接删除了

            }
        });




    }}

4.查询数据

在咱们的安卓开发当中的sqlitedatabase类当中还提供了一个query()方法对于数据进行查询,这个方法非常复杂,最短的一个方法重载也需要传入7个参数。

主界面:

<?xml version="1.0" encoding="utf-8"?>
<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
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/creat"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="create database"/>
<button
    android:id="@+id/add"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="add data"/>
<button
    android:id="@+id/updata"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="updata data"/>
<button
    android:id="@+id/deletedata"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:text="delete data"/>

</linearlayout>

主活动的查询代码如下:

 private void querystudents() {

        // 相当于 select * from students 语句
        cursor cursor = msqlitedatabase.query(sqlitedbhelper.table_student, null,
                "cls_id > ? and id >= 1", new string[]{"3"},
                null, null, null, null);

        // 不断移动光标获取值
        while (cursor.movetonext()) {
            // 直接通过索引获取字段值
            int stuid = cursor.getint(0);

            // 先获取 name 的索引值,然后再通过索引获取字段值
            string stuname = cursor.getstring(cursor.getcolumnindex("name"));
            log.e("", "id: " + stuid + " name: " + stuname);
        }
        // 关闭光标
        cursor.close();
    }

最后我们利用adb工具就可以查看到我们是否成功进行数据库操作啦!!