使用SQLiteOpenHelper类对数据库简单操作
实现数据库基本操作
数据库创建的问题解决了,接下来就该使用数据库实现应用程序功能的时候了。基本的操作包括创建、读取、更新、删除,即我们通常说的CRUD(Create, Read, Update, Delete)。在实现这些操作的时候,我们会使用到两个比较重要的类SQLiteDatabase类和Cursor类。
SQLiteDatabase类在上面已经接触过了,这个类是核心类,用于管理和操作SQLite数据库,几乎所有的数据库操作,最终都将由这个类完成。
Cursor类主要用于保存查询返回的结果,提供随机读、写的功能,从这一点上来看,有点类似于ado中的Dataset。Cursor类非常重要,在数据库操作中,在UI中,经常会用到Cursor,所以大家一定要掌握Cursor 的用法。
下面我们用实例来说明如何实现CRUD操作。首先,我们创建一个客户资料相关的数据存取类,在这个类中,我们实现基本的增删改查等操作,需要的话,大家可以自己添加其它的代码等等,这里我们只是演示数据库的基本操作。
一.当操作SQLite数据库时需要,需要得到一个SQLiteOpenHelper对象。但由于SQLiteOpenHelper是一个抽象类,需要自定义一个类来继承它。这样自定义类就实现了SQLiteOpenHelper中的所有方法。
二.创建一个类并继承SQLiteOpenHelper,实现其中的方法。并在构造函数中调用基类的构造函数。
[java]
1.public class SqlLiteHelper extends SQLiteOpenHelper {
2. private static final int VERSION =1;
3. //TODO 实现基类的构造函数,四个参数的
4. public SqlLiteHelper(Contextcontext , String DBname ,CursorFactory factory , int version)
5. {
6. super(context, DBname,factory, version);
7. }
8. //TODO 实现基类的构造函数,三个参数的
9. public SqlLiteHelper(Context context, String DBname ,int version ) {
10. this(context, DBname, null,version);
11.
12. }
13. //TODO 实现基类的构造函数,两个参数的
14. public SqlLiteHelper(Contextcontext,String DBname) {
15. this(context, DBname, null,VERSION);
16.
17. }
18.
19. //当创建数据库时执行
20. @Override
21. public void onCreate(SQLiteDatabasedb) {
22. // TODO Auto-generatedmethod stub
23. System.out.println("创建数据库");
24. db.execSQL("Createtable user(id int , name varchar(20))");
25. }
26.
27. //当更新数据库版本时执行
28. @Override
29. public voidonUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
30. //TODO Auto-generated method stub
31. System.out.println("修改数据库版本号");
32. }
33.}
三.创建数据库
[java]
1.//创建自定义SqlLiteHelper类的实例,调用两个参数的构造函数
2.SqlLiteHelper mySqlLiteHelper = new SqlLiteHelper(SqlLiteTestActivity.this,"paj_db_test");
3.//只有调用了getWritableDatabase()方法才会执行SqlLiteHelper类中的OnCreate中的代码
4.mySqlLiteHelper.getWritableDatabase();
四.更新数据库版本
[java]
1.//调用三个参数的构造函数更新数据库的版本,数据库版本只能递增。
2.SqlLiteHelper myhelper = new SqlLiteHelper(getApplicationContext(),"paj_db_test", 2);
3.myhelper.getReadableDatabase();
五.向数据库中插入信息
[java]
1.//创建SqlLiteHelper自定义类对象,并调用两个参数的构造函数
2.SqlLiteHelper myhelper = newSqlLiteHelper(getApplicationContext(), "paj_db_test");
3.//创建一个ContenValues对象,存储数据
4.ContentValues contentValues = new ContentValues();
5.//把数据填充到ContentValues对象中,ContentValues对象中的键和值对应数据库中的列和值。值必须与数据列的类型相同。
6.contentValues.put("id", 2);
7.contentValues.put("name", "zhangsan");
8.//创建可写的SQLiteDatabase对象
9.SQLiteDatabase db = myhelper.getWritableDatabase();
10.//调用insert方法写入数据库.第一个参数为表名,第二个为null,第三个参数为CntentValues对象。
11.db.insert("user", null, contentValues);
六.更新数据库信息
[java]
1.//创建一个ContentValue对象存放要更新的信息
2.ContentValues contentValues = new ContentValues();
3.//把要更新的信息存放到ContentValues对象中。
4.//第一个参数对应数据库中的列,第二个参数对应列的值。
5.contentValues.put("name", "zhangsanfeng");
6.//创建SqlLiteHelper对象
7.SqlLiteHelper myhelper = new SqlLiteHelper(getApplicationContext(),"paj_db_test");
8.//创建一个可写的SQLiteDatabase对象
9.SQLiteDatabase db = myhelper.getWritableDatabase();
10.//使用update更新数据库
11.//第一个参数是数据库表名
12.//第二个参数是ContentValues对象
13.//第三个参数是SQL语句中的Where条件子语句,其中的?对应第四个参数中String数组。数组中有几个字符就有几个问号。
14.//第四个参数是Where的条件。使用String数组存放Where条件
15.db.update("user", contentValues, "id=?", newString[]{"1"});
七.查询数据库
[java]
1.//调用两个参数的构造函数实例化SqlLiteHelper自定义类
2.SqlLiteHelper myhelper = new SqlLiteHelper(SqlLiteTestActivity.this,"paj_db_test");
3.//创建只读的SQLiteDatabase对象
4.SQLiteDatabase db = myhelper.getReadableDatabase();
5.//调用SQLitedatabase的query方法获取检索结果并放入Cursor对象中。
6.//query方法的第一个参数是表名
7.//第二个参数是使用String数组存放列名,一个列明占用一个元素
8.//第三个参数是SQL语句中的Where条件子语句,其中的?对应第四个参数中String数组。数组中有几个字符就有几个问号。
9.//第三个参数是Where的条件
10.//第四个参数分组
11.//第五个参数是SQL中的having
12.//第六个参数是排序
13.Cursor cursor = db.query("user", null,null, null, null, null, null);
14.//使用cursor.moveToNext()把游标下移一行。游标默认在第一行的上一行。
15.while (cursor.moveToNext()) {
16. //使用GetString获取列中的值。参数为使用cursor.getColumnIndex("name")获取的序号。
17. String nameString =cursor.getString(cursor.getColumnIndex("name"));
18. String idsString = cursor.getString(cursor.getColumnIndex("id"));
19. System.out.println("ID--->"+idsString);
20. System.out.println("NAME--->"+nameString);
21. }
本篇文章来源于 Linux公社网站(www.linuxidc.com) 原文链接:http://www.linuxidc.com/Linux/2012-02/53503.htm
使用SQLiteOpenHelper类对数据库简单操作的更多相关文章
- android SQLite使用SQLiteOpenHelper类对数据库进行操作
android SQLite使用SQLiteOpenHelper类对数据库进行操作 原文: http://byandby.iteye.com/blog/835580
- android SQLite使用SQLiteOpenHelper类对数据库进行增删查改
一个简单的例子,当点击按钮时进行相应的操作,效果图如下: 项目代码如下: DatabaseHelper类 package com.example.sqlitedatebasetest; import ...
- Java通过代理类实现数据库DAO操作
下面的所有代码示例都取自李兴华的<Java Web开发实战经典>的随书源码,因为觉得设计得很好,所以将代码摘录下来作成笔记. 首先,我们在一个java文件中定义要存储的结构类型: impo ...
- MongoDB数据库简单操作
之前学过的有mysql数据库,现在我们学习一种非关系型数据库 一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数 ...
- android数据库简单操作
1.DbOpenHelper package com.example.dbtest.dbHelper; import android.content.Context; import android.d ...
- SQL数据库简单操作
sql语言简介 (1)数据库是文件系统,使用标准sql对数据库进行操作 * 标准sql,在mysql里面使用语句,在oracle.db2都可以使用这个语句 (2)什么是sql * Structured ...
- MySQL数据库简单操作
title date tags layout MySQL简单操作 2018-07-16 Linux post 登录mysql mysql -h 主机名 -u 用户名 -p 查看所有数据库 show d ...
- Java 数据库简单操作类
数据库操作类,将所有连接数据库的配置信息以及基本的CRUD操作封装在一个类里,方便项目里使用,将连接数据库的基本信息放在配置文件 "dbinfo.properties" 中,通过类 ...
- Android基础之sqlite 数据库简单操作
尽管很简单,但是也存下来,以后直接粘过去就能用了. public class DBHelper extends SQLiteOpenHelper { private static final ...
随机推荐
- php面向对象学习笔记01-面向对象介绍、构造函数、析构函数
偶尔翻看以前的笔记.就整理下.方便以后的查阅 类-成员属性 成员属性是从某个事务提取出来的, 可以是基本数据类型,也可以是复合数据类型(数组,对象) //创建一个类 class Cat{ pubic ...
- Jquery常用操作:checkbox、select取值,radio、checkbox、select选中及其相关
常用Jquery操作:checkbox取值.select取值.radio选中.checkbox选中.select选中及其相关: 1.影藏页面元素 使用jquery真的很方便,比如要控制div的显示与隐 ...
- 列出JDK中常用的Java包
列出JDK中常用的Java包 1.java.lang 2.java.sql 3.java.io 4.java.math 5.java.text 6.java.net 7.java.util 8.jav ...
- 表格布局----基于bootstrap样式 布局
在实际开发中,我们通过菜鸟教程复制的表格往往不能满足我们的开发需求,样式很难看,而且不能自适应,尤其是需要到处Excel的样式,感觉非常糟糕,这次我就写了一个表单,不足之处,希望大神们多多指教: 代码 ...
- 芝麻HTTP:Python爬虫入门之正则表达式
1.了解正则表达式 正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符.及这些特定字符的组合,组成一个"规则字符串",这个"规则字符串"用来 ...
- CF#418 Div2 D. An overnight dance in discotheque
一道树形dp裸体,自惭形秽没有想到 首先由于两两圆不能相交(可以相切)就决定了一个圆和外面一个圆的包含关系 又可以发现这样的树中,奇数深度的圆+S,偶数深度的圆-S 就可以用树形dp 我又写挫了= = ...
- 你该怎么选Offer
原文出处:http://www.360doc.com/content/15/1223/07/1209677_522436084.shtml 记录目的:自勉.分享 摘要 一段时间无数公司.无数投资人蜂拥 ...
- Python Cookbook(第3版)中文版:15.18 传递已打开的文件给C扩展
15.18 传递已打开的文件给C扩展¶ 问题¶ 你在Python中有一个打开的文件对象,但是需要将它传给要使用这个文件的C扩展. 解决方案¶ 要将一个文件转换为一个整型的文件描述符,使用 PyFile ...
- 都是SCI惹的祸?
都是SCI惹的祸? 过去只知道地质学家需要跋山涉水寻找宝藏,最近同一位海外归来的学者谈起,方知少数其它领域的科研人员,也"跋山涉水",在内地研究机构寻找可以写好文章的研究成果,不管 ...
- 【ASP.NET Core】根据 Content-Type 头部来筛选 Action
在开始今天的吹牛节目之前,老周先说个破事:每周的周五或者周六,老周会在新浪直播平台(一直播同步)开播 ASP.NET Core 相关的内容.具体的直播时间老周会在微博上发布.直播是免费观看的,当然了, ...