android SQLite数据库的基本操作

SQLite是Android使用的轻量级的数据库,开发Android应用是对数据库的操作自然是必不可少。

Android提供了一个SQLiteOpenHelper类来可以很方便的操作数据库,

继承和扩展SQLiteOpenHelper类主要做的工作就是重写以下两个方法。 
       onCreate: 当数据库被首次创建时执行该方法,一般将创建表等初始化操作在该方法中执行。 
       onUpgrade:当打开数据库时传入的版本号与当前的版本号不同时会调用该方法。

下面是我写的一个SQLite基本操作的demo。

主要包含两个java类——

DBUtil类,继承自SQLiteOpenHelper,用以实现各种操作功能:

 1 package barry.android.db;
 2
 3 import android.content.ContentValues;
 4 import android.content.Context;
 5 import android.database.Cursor;
 6 import android.database.sqlite.SQLiteDatabase;
 7 import android.database.sqlite.SQLiteOpenHelper;
 8
 9 public class DBUtil extends SQLiteOpenHelper {
10
11     private final static String DATABASE_NAME = "db2004";
12     private final static int DATABASE_VERSION = 1;
13     private static final String TABLE_NAME ="students";
14     private static final String FILED_1 = "name";
15     private static final String FILED_2 = "password";
16
17     public DBUtil(Context context){
18         super(context, DATABASE_NAME,null,DATABASE_VERSION);
19         System.out.println("new DBUtil");
20     }
21
22     @Override
23     public void onCreate(SQLiteDatabase db) {
24         String sql = "CREATE TABLE "+TABLE_NAME+" ( "+FILED_1 +" TEXT, "+ FILED_2 +" TEXT );";
25         db.execSQL(sql);
26         System.out.println("oncreate创建表");
27     }
28
29     @Override
30     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
31         db.execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
32         System.out.println("onUpgrade删除表");
33         this.onCreate(db);
34     }
35
36     /**
37      * 查询表中所有的数据
38      * @return
39      */
40     public Cursor select(){
41         return this.getReadableDatabase()
42             .query(TABLE_NAME, null, null, null, null, null, null);
43     }
44
45     /**
46      * 插入一条数据到表中
47      * @param name 字段一的值
48      * @param password 字段二的值
49      */
50     public void insert(String name ,String password){
51         ContentValues cv = new ContentValues();
52         cv.put(FILED_1, name);
53         cv.put(FILED_2, password);
54         this.getWritableDatabase().insert(TABLE_NAME, null, cv);
55         this.getWritableDatabase().close();//关闭数据库对象
56     }
57
58     /**
59      * 删除表中的若干条数据
60      * @param name 一个包含所有要删除数据的"name"字段的数组
61      */
62     public void delete(String[] name){
63         String where = FILED_1+" = ?";
64         String[] whereValues = name;
65         this.getWritableDatabase().delete(TABLE_NAME, where, whereValues);
66         this.getWritableDatabase().close();
67     }
68
69     /**
70      * 更新表中的数据(修改字段二"password")
71      * @param name 要更新的数据"name"字段值
72      * @param newPassword 新的"password"字段
73      */
74     public void update(String name,String newPassword){
75         ContentValues cv = new ContentValues();
76         cv.put(FILED_2, newPassword);
77         String where =FILED_1+" = ?";
78         String[] whereValues= {name};
79         this.getWritableDatabase().update(TABLE_NAME, cv, where, whereValues);
80         this.getWritableDatabase().close();
81     }
82
83     /**
84      * 清空表中的数据
85      */
86     public void clean (){
87         this.getWritableDatabase().execSQL("DROP TABLE IF EXISTS "+TABLE_NAME);
88         System.out.println("clean删除表");
89         this.onCreate(this.getWritableDatabase());
90         this.getWritableDatabase().close();
91     }
92 }

以及调用DBUtil的Activity:

 1 package barry.android.db;
 2
 3 import android.app.Activity;
 4 import android.database.Cursor;
 5 import android.os.Bundle;
 6
 7 public class Demo04_helperActivity extends Activity {
 8     /** Called when the activity is first created. */
 9     @Override
10     public void onCreate(Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         setContentView(R.layout.main);
13
14
15         DBUtil dbUtil = new DBUtil(this);
16         dbUtil.insert("周杰伦", "jaychou");
17         dbUtil.insert("韩寒", "twocolds");
18         dbUtil.insert("郭德纲", "yunhejiuxiao");
19
20         System.out.println("***********************************全部数据息");
21         printData(dbUtil);
22
23         dbUtil.delete(new String[]{"周杰伦"});
24
25         System.out.println("***********************************删除‘周杰伦‘之后数据");
26         printData(dbUtil);
27
28         dbUtil.update("郭德纲", "longtengsihai");;
29         System.out.println("***********************************修改‘郭德纲’的密码为‘longtengsihai‘");
30         printData(dbUtil);
31
32         dbUtil.clean();
33
34     }
35
36     private void printData(DBUtil dbUtil) {
37         Cursor cursor = dbUtil.select();
38         if(cursor.moveToFirst()){
39             System.out.println("当前表中的数据条数:"+cursor.getCount());
40             do{
41                 System.out.println(cursor.getString(0)+cursor.getString(1));
42             }while(cursor.moveToNext());
43         }
44         cursor.close();
45     }
46 }

该程序所执行的操作为:

1.在创建一个名为"db2004"的数据库,(即DBUtil的“DATABASE_NAME”字段)。

2.当数据库被首次创建时执行DBUtil的onCreate方法,创建一张名为students的表,包含两个字段(name,password)。(即DBUtil的”TABLE_NAME、FILED_1、FILED_2”字段)。

3.往数据库中插入三条数据“周杰伦、韩寒、郭德纲”。然后.查询出表中所有数据并打印。

4.删除数据“周杰伦”。然后.查询出表中所有数据并打印。

5.将数据“郭德纲”的password修改为"longtengsihai"。然后.查询出表中所有数据并打印。

6.清除表中的所有数据,程序结束。

执行的结果为:

02-07 11:22:47.361: I/System.out(962): new DBUtil
02-07 11:22:47.490: I/System.out(962): ***********************************全部数据息
02-07 11:22:47.490: I/System.out(962): 当前表中的数据条数:3
02-07 11:22:47.500: I/System.out(962): 周杰伦jaychou
02-07 11:22:47.500: I/System.out(962): 韩寒twocolds
02-07 11:22:47.500: I/System.out(962): 郭德纲yunhejiuxiao
02-07 11:22:47.511: I/System.out(962): ***********************************删除‘周杰伦‘之后数据
02-07 11:22:47.540: I/System.out(962): 当前表中的数据条数:2
02-07 11:22:47.540: I/System.out(962): 韩寒twocolds
02-07 11:22:47.550: I/System.out(962): 郭德纲yunhejiuxiao
02-07 11:22:47.560: I/System.out(962): ***********************************修改‘郭德纲’的密码为‘longtengsihai‘
02-07 11:22:47.590: I/System.out(962): 当前表中的数据条数:2
02-07 11:22:47.590: I/System.out(962): 韩寒twocolds
02-07 11:22:47.590: I/System.out(962): 郭德纲longtengsihai
02-07 11:22:47.601: I/System.out(962): clean删除表
02-07 11:22:47.610: I/System.out(962): oncreate创建表

结果正确。

时间: 2024-11-04 13:04:38

android SQLite数据库的基本操作的相关文章

Android SQLite数据库操作示例

SQLite介绍 SQLite是一个非常流行的嵌入式数据库,它支持SQL语言,并且只利用很少的内存就有很好的性能.此外,它还是开源的,任何人都可以使用它. SQLite由以下几个组件组成:SQL编译器.内核.后端以及附件.SQLite通过利用虚拟机和虚拟数据库引擎(VDBE),使调试.修改和扩展SQLite的内核变得更加方便. SQLite支持的数据类型参考链接:http://blog.csdn.net/wzy_1988/article/details/36005947 Android在运行时(

Android Sqlite数据库加密

Android使用的是开源的SQLite数据库,数据库本身没有加密,加密思路通常有两个: 1. 对几个关键的字段使用加密算法,再存入数据库 2. 对整个数据库进行加密 SQLite数据库加密工具: 收费工具: SSE(SQLite Encryption Extension) 免费工具: SQLCipher SQLCipher使用: SQLCipher是完全开源的软件,提供256-bit AES加密 源码编译: 1. OpenSSL编译 SQLCipher源码编译需要依赖OpenSSL提供的lib

android小功能实现之SQLite数据库的基本操作

 创建一个Android工程 一 新建数据库 1 新建一个类DBOpenHelper 内容如下: import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; public class DBOpenHelper extends SQLiteOpenHelper { public DBOpenHelpe

Android SQLite数据库基本操作

程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能.而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库.那么就来看一下在Android程序中怎么去操作SQLite数据库来实现一些需求的吧,仍然以一个小例子开始: 在创建Android项目之前,我们应该想一下我们要定义的数据库的相关信息和里面的表格的相关信息,为了日后数据库的更新更加方便 ,我们可以用一个专门的类保存数据库的相关信息,以后如果要更新数据库的话只需要该动这个类

Android 存储学习之SQLite数据库的基本操作

本节学习SQLite数据库,SQLite是Android内置的一个简单的轻量级的数据库.关于SQLite的简介我这里不做过多的介绍. 既然我们要学习数据库的基本操纵,那就离不开,数据库的创建,增删改查等操作. 再学习数据库的相关操作前,我先给大家介绍一个类:SQLiteOpenHelper.SQLiteOpenHelper是Android系统为方便程序的开发引入的一个对数据库管理的工具类.可用于关于数据库的创建和版本更新.一般的用法是创建SQLiteOpenHelper的子类,并实现它的OnCr

[Android] SQLite数据库之增删改查基础操作

    在编程中常常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,可以支持Windows/Linux/Unix等主流操作系统,同一时候可以跟非常多程序语言如C#.PHP.Java等相结合.以下先回想SQL的基本语句,再讲述Android的基本操作. 一. adb shell回想SQL语句     首先,我感觉自己整个大学印象最深的几门课就包含<数据库>,所以想先回想SQL增删改查的基本语句.而在And

Android SQLite数据库使用示例

简单介绍一下,现在的主流移动设备像Android.iPhone等都使用SQLite作为复杂数据的存储引擎,在我们为移动设备开发应用程序时,也许就要使用到SQLite来存储我们大量的数据,所以我们就需要掌握移动设备上的SQLite开发技巧.对于Android平台来说,系统内置了丰富的API来供开发人员操作SQLite,我们可以轻松的完成对数据的存取. 下面我们用SQLite来开发一个英语词典.下图是项目结构-- MySQLite.java package sn.qdj.sqlitedemo; im

Android Sqlite 数据库版本更新

http://87426628.blog.163.com/blog/static/6069361820131069485844/ 1.自己写一个类继承自SqliteOpenHelper 2.会实现SqliteOpenHelper的两个方法 onCreate与onUpgrade,google文档对两个回调方法的解释是创建数据库的时候调用与更新数据库的版本的时候调用 3.Sqlite数据库主要是用来缓存应用的数据,而应用却是一直在更新版本,相应的数据的表的字段也会一直增加会改变或减少 4.这个时候就

Android SQLite数据库版本升级原理解析

Android使用SQLite数据库保存数据,那数据库版本升级是怎么回事呢,这里说一下. 一.软件v1.0 安装v1.0,假设v1.0版本只有一个account表,这时走继承SQLiteOpenHelper的onCreate,不走onUpgrade. 1.v1.0(直接安装v1.0) 二.软件v2.0 有2种安装软件情况: 1.v1.0   -->  v2.0              不走onCreate,走onUpgrade 2.v2.0(直接安装v2.0)          走onCrea