现在你已经掌握了创建和升级数据库的方法,接下来就该学习一下如何对表中的数据进 行操作了。其实我们可以对数据进行的操作也就无非四种,即 CRUD。其中 C 代表添加

(Create),R 代表查询(Retrieve),U 代表更新(Update),D 代表删除(Delete)。每一种操 作又各自对应了一种 SQL 命令,如果你比较熟悉 SQL 语言的话,一定会知道添加数据时使 用 insert,查询数据时使用 select,更新数据时使用 update,删除数据时使用 delete。但是开 发者的水平总会是参差不齐的,未必每一个人都能非常熟悉地使用 SQL 语言,因此 Android 也是提供了一系列的辅助性方法,使得在 Android 中即使不去编写 SQL 语句,也能轻松完成 所有的 CRUD 操作。

前面我们已经知道,调用 SQLiteOpenHelper 的 getReadableDatabase()或 getWritableDatabase()方法是可以用于创建和升级数据库的,不仅如此,这两个方法还都会返回一个 SQLiteDatabase对象,借助这个对象就可以对数据进行 CRUD 操作了。 那么我们一个一个功能地看,首先学习一下如何向数据库的表中添加数据吧。

SQLiteDatabase 中提供了一个 insert()方法,这个方法就是专门用于添加数据的。它接收三个 参数,第一个参数是表名,我们希望向哪张表里添加数据,这里就传入该表的名字。第二个 参数用于在未指定添加数据的情况下给某些可为空的列自动赋值 NULL,一般我们用不到这 个功能,直接传入 null 即可。第三个参数是一个 ContentValues 对象,它提供了一系列的 put() 方法重载,用于向 ContentValues 中添加数据,只需要将表中的每个列名以及相应的待添加 数据传入即可。

介绍完了基本用法,接下来还是让我们通过例子的方式来亲身体验一下如何添加数据 吧。修改 activity_main.xml 中的代码,如下所示:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"

android:orientation="vertical" >

……

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

/>

</LinearLayout>

可以看到,我们在布局文件中又新增了一个按钮,稍后就会在这个按钮的点击事件里编 写添加数据的逻辑。接着修改 MainActivity 中的代码,如下所示:

public class MainActivity extends Activity {

private MyDatabaseHelper dbHelper;

@Override

protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

dbHelper = new MyDatabaseHelper(this, "BookStore.db", null, 2);

……

Button addData = (Button) findViewById(R.id.add_data);

addData.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

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); // 插入第二条数据

}

});

}

}

在添加数据按钮的点击事件里面,我们先获取到了 SQLiteDatabase 对象,然后使用 ContentValues 来对要添加的数据进行组装。如果你比较细心的话应该会发现,这里只对 Book 表里其中四列的数据进行了组装,id 那一列没并没给它赋值。这是因为在前面创建表的时候 我们就将 id 列设置为自增长了,它的值会在入库的时候自动生成,所以不需要手动给它赋 值了。接下来调用了 insert()方法将数据添加到表当中,注意这里我们实际上添加了两条数据,
上述代码中使用 ContentValues 分别组装了两次不同的内容,并调用了两次 insert()方法。

好了,现在可以重新运行一下程序了,界面如图 6.21 所示。

图   6.21

点击一下 Add data 按钮,此时两条数据应该都已经添加成功了,不过为了证实一下,我
们还是打开 BookStore.db 数据库瞧一瞧。输入 SQL 查询语句 select
* from
Book,结果如图

6.22
所示。

图   6.22

由此可以看出,我们刚刚组装的两条数据,都已经准确无误地添加到 Book 表中了。

android: SQLite添加数据的更多相关文章

  1. Android 数据库管理— — —添加数据

    <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=" ...

  2. android: SQLite更新数据

    学习完了如何向表中添加数据,接下来我们看看怎样才能修改表中已有的数据. SQLiteDatabase 中也是提供了一个非常好用的 update()方法用于对数据进行更新,这个方法 接收四个参数,第一个 ...

  3. android: SQLite查询数据

    掌握了查询数据的方法之后,你也就将数据库的 CRUD 操 作全部学完了.不过千万不要因此而放松,因为查询数据也是在 CRUD 中最复杂的一种 操作. 我们都知道 SQL 的全称是 Structured ...

  4. android: SQLite删除数据

    删除数据对你来说应该就更简单了,因为它所需要用到的知识点你全部已经学过了. SQLiteDatabase 中提供了一个 delete()方法专门用于删除数据,这个方法接收三个参数,第一 个参数仍然是表 ...

  5. android listview 添加数据

    <span style="white-space:pre"> </span>listView = (ListView) findViewById(R.id. ...

  6. android sqlite导入数据

    @Override public void onUpgrade(SQLiteDatabase db, int arg1, int arg2) { // TODO Auto-generated meth ...

  7. 【Android实验】 数据存储与访问sqlite

    目录 实验目的 实验要求 实验过程 功能分析: 实验结果: 实验的代码 实验总结 实验目的     分别使用sqlite3工具和Android代码的方式建立SQLite数据库.在完成建立数据库的工作后 ...

  8. Android 数据库管理— — —更新数据

    <?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android=" ...

  9. Android SQLite简介

    SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, Python)都使 ...

随机推荐

  1. Block的copy和循环引用的问题

    在实际开发中,发现使用Block有着比delegate和notification更简洁的优势.于是在目前的项目中大量的使用block. 在我的头文件我是这样声明使用block的. 我将block声明为 ...

  2. Oracle 截取、查找字符函数(持续更新)

    整理一些常用的截取.查找字符函数: 1.查找某一个字符串中某一个字符(串)出现的次数 SELECT LENGTH(REGEXP_REPLACE(REPLACE('anne<br>lily& ...

  3. 浏览器对象模型BOM

    第二章 浏览器对象模型BOM 1.作用:操作窗口:提供导航对象:提供定位对象:浏览器上方的地址栏:提供跟屏幕相关对象:提供对Cookie的支持 2.根元素:window:代表整个窗口:window,o ...

  4. mac配置java开发环境: jdk1.7 +sdk1.7+maven +tomcat

    1.先安装jdk ,才能安装sdk .2 mac中jdk1.7的默认位置:/Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home ...

  5. tesseract-ocr 出现 错误 Please make sure the TESSDATA_PREFIX environment variable is set to the parent d irectory of your "tessdata" directory.解决方案

    简单就是说把tessdata拷贝到exe的所在目录,或者设置TESSDATA_PREFIX环境变量

  6. [f]JQ cookie插件

    jQuery.cookie = function(name, value, options) { if (typeof value != 'undefined') { options = option ...

  7. I535卡刷土豆修改4.1.2版本ROMV4過程

    I535卡刷土豆修改版本ROMV4過程 一.首先在电脑上安装I535的电脑驱动程序 二.備份EFS,備份舊ROM(网上有教程) 三.解锁:下载EZ-Unlock解锁. 四.檢查Recovery是否為最 ...

  8. Android--Notification

    1.通知(Notification)是应用程序没有运行在前台时可以向用户发出一些提示消息的功能,发出通知后,手机状态栏会显示通知,用户可以通过下拉状态栏来查看和操作通知: 2.Notification ...

  9. (原创)即使最可怕的自然力量,也不失美丽——火山喷发(摄影,欣赏)

    文中图片摘自腾讯文化:www.cal.qq.com 1.Abstract     最可怕的力量也潜含着最美丽的风景奇观,虽然不能亲眼目睹,但透过大师的视角,一样也能体会到自然力量撼动的美丽. 2.Co ...

  10. poj 1325 Machine Schedule

    Time Limit: 1000 MS Memory Limit: 10000 KB 64-bit integer IO format: %I64d , %I64u   Java class name ...