首页 » Android » Android SQLite数据库存储之更新数据

Android SQLite数据库存储之更新数据

原文 http://blog.csdn.net/Tongsiyuaichidami/article/details/79163653

2018-01-26 02:00:48阅读(457)

本篇文章还是在Android SQLite数据库存储之添加数据的基础上进行修改,学习完了如何向表中添加数据,接下来再看看怎样才能修改表中已有的数据,SQLiteDatabase中也提供了一个非常好用的update()方法,用于对数据进行更新,这个方法接收4个参数,第一个参数和insert()方法一样,也是表名,在这里指定去更新哪张表里的数据,第二个参数是ContentValues对象,要把更新数据在这里组装进去,第三第四个参数用于约束更新某一行或者某几行中的数据,不指定的话默认就是更新所有行。

那么接下来还是通过一个小例子来体验一下如何更新数据,修改activity_main.xml中的代码,如下:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout 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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.activitytest.MainActivity">
    <Button
        android:id="@+id/create_database"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Create database"
        android:textAllCaps="false"/>
    <Button
        android:id="@+id/add_data"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Add data"
        android:textAllCaps="false"
        app:layout_constraintTop_toBottomOf="@id/create_database"/>
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Update data"
        android:textAllCaps="false"
        app:layout_constraintTop_toBottomOf="@id/add_data"/>
</android.support.constraint.ConstraintLayout>
布局文件中的代码非常简单,就是添加了一个用于更新数据的按钮,然后修改MainActivity中的代码,如下:

public class MainActivity extends AppCompatActivity {
    private static final String TAG = "MainActivity";
    private MyDatabaseHelper dbHelper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        dbHelper = new MyDatabaseHelper(this,"BookStore.db",null,3);
        Button createDatabase = findViewById(R.id.create_database);
        Button addData = findViewById(R.id.add_data);
        Button updateData = findViewById(R.id.update_data);
        createDatabase.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                dbHelper.getWritableDatabase();
            }
        });
        addData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                ContentValues values = new ContentValues();
                //开始添加第一条数据
                values.put("name","The Da VinCi Code");
                values.put("author","Dan Brown");
                values.put("pages",454);
                values.put("price",16.96);
                db.insert("Book",null,values);//插入第一条数据
                values.clear();
                //开始添加第二条数据
                values.put("name","The Lost Symbol");
                values.put("author","Dan Brown");
                values.put("pages",510);
                values.put("price",19.95);
                db.insert("Book",null,values);//插入第三条数据
            }
        });
        updateData.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SQLiteDatabase db = dbHelper.getWritableDatabase();
                ContentValues values = new ContentValues();
                values.put("price",10.99);
                db.update("Book",values,"name = ?" , new String[]{"The Da VinCi Code"});
            }
        });
    }
}
这里在更新数据按钮的点击事件里面构建了一个ContentValues对象,并且只给它指定了一组数据,说明我们只是想把价格这一列的数据更新成10.99,然后调用了SQLiteDatabase的update()方法去执行具体的更新操作,可以看到,这里使用了第三第四个参数来指定具体更新哪几行,第三个参数对应的是SQL语句的where部分,表示更新所有name等于 ?的行,而 ?是一个占位符,可以通过第四个参数提供的一个字符串数组为第三个参数中的每个占位符指定相应的内容,因此上述代码想表达的意图是将名字是The Da VinCi Code的这本书的价格改成10.99。

现在重新运行一下程序,如图:

Android SQLite数据库存储之更新数据

点击一下Update data按钮后,再次输入查询语句查看表中的数据情况,结果如图:

Android SQLite数据库存储之更新数据

可以看到,The Da VinCi Code这本书的价格已经被成功改为10.99了。

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹