实现数据库基本操作
       数据库创建的问题解决了,接下来就该使用数据库实现应用程序功能的时候了。基本的操作包括创建、读取、更新、删除,即我们通常说的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类对数据库简单操作的更多相关文章

  1. android SQLite使用SQLiteOpenHelper类对数据库进行操作

    android SQLite使用SQLiteOpenHelper类对数据库进行操作 原文: http://byandby.iteye.com/blog/835580

  2. android SQLite使用SQLiteOpenHelper类对数据库进行增删查改

    一个简单的例子,当点击按钮时进行相应的操作,效果图如下: 项目代码如下: DatabaseHelper类 package com.example.sqlitedatebasetest; import ...

  3. Java通过代理类实现数据库DAO操作

    下面的所有代码示例都取自李兴华的<Java Web开发实战经典>的随书源码,因为觉得设计得很好,所以将代码摘录下来作成笔记. 首先,我们在一个java文件中定义要存储的结构类型: impo ...

  4. MongoDB数据库简单操作

    之前学过的有mysql数据库,现在我们学习一种非关系型数据库 一.简介 MongoDB是一款强大.灵活.且易于扩展的通用型数据库 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数 ...

  5. android数据库简单操作

    1.DbOpenHelper package com.example.dbtest.dbHelper; import android.content.Context; import android.d ...

  6. SQL数据库简单操作

    sql语言简介 (1)数据库是文件系统,使用标准sql对数据库进行操作 * 标准sql,在mysql里面使用语句,在oracle.db2都可以使用这个语句 (2)什么是sql * Structured ...

  7. MySQL数据库简单操作

    title date tags layout MySQL简单操作 2018-07-16 Linux post 登录mysql mysql -h 主机名 -u 用户名 -p 查看所有数据库 show d ...

  8. Java 数据库简单操作类

    数据库操作类,将所有连接数据库的配置信息以及基本的CRUD操作封装在一个类里,方便项目里使用,将连接数据库的基本信息放在配置文件 "dbinfo.properties" 中,通过类 ...

  9. Android基础之sqlite 数据库简单操作

    尽管很简单,但是也存下来,以后直接粘过去就能用了. public class DBHelper extends SQLiteOpenHelper {      private static final ...

随机推荐

  1. MySQL更改数据库表的存储引擎

    MySQL更改数据库表的存储引擎 1.查看表的原存储引擎 show create table user; 'user', 'CREATE TABLE `user` (\n `id` int(11) N ...

  2. Django学习-8-模板渲染的一些特性

       对于{%for i in list%}来说里面都有一个{{forloop.counter}}每次循环一次记一次数    对于{%for i in list%}来说里面都有一个{{forloop. ...

  3. Entity Framework Core 2.0 入门简介

    不多说废话了, 直接切入正题. EF Core支持情况 EF Core的数据库Providers: 此外还即将支持CosmosDB和 Oracle. EFCore 2.0新的东西: 查询: EF.Fu ...

  4. 洛谷P2402 奶牛隐藏(网络流,二分答案,Floyd)

    洛谷题目传送门 了解网络流和dinic算法请点这里(感谢SYCstudio) 题目 题目背景 这本是一个非常简单的问题,然而奶牛们由于下雨已经非常混乱,无法完成这一计算,于是这个任务就交给了你.(奶牛 ...

  5. 【BZOJ1934】善意的投票(网络流)

    [BZOJ1934]善意的投票(网络流) 题面 Description 幼儿园里有n个小朋友打算通过投票来决定睡不睡午觉.对他们来说,这个问题并不是很重要,于是他们决定发扬谦让精神.虽然每个人都有自己 ...

  6. Bzoj4916: 神犇和蒟蒻

    题面 传送门 Sol 第一问puts("1") 第二问,\(\varphi(i^2)=i\varphi(i)\) 设\(\phi(n)=\sum_{i=1}^{n}i\varphi ...

  7. 8Manage:数据安全,企业新时代的护航利器

    数据安全,是个老生常谈的话题,但是安全往往是在危险的时候方能体现出来,因此,这也是很容易被人们所忽略的部分.2017年,数据安全事件更是屡屡登上头条,除了个人信息的数据泄露之外,还有网络病毒造成的全球 ...

  8. struct 2 基本知识

    (最近在写一个ssh的项目,虽然看网上好像都说ssh已经过气了...之前虽然老师有上过这个课,我还做了一个PPT专门讲这个来着,但果然没有实践经验还是不容易理解.在参照一个项目写ssh时候,表示四脸蒙 ...

  9. Treesoft数据库管理系统使用说明

    数据列表页面有以下功能:1.直接新添数据行2.直接双击编辑数据3.勾选复制新增数据4.数据按字段排序5.数据列过滤6.结果结果集过滤7.导出数据等 表结构设计页面有以下功能:1.直接新增.删除字段2. ...

  10. 手摸手教你微信小程序开发之自定义组件

    前言 相信大家在开发小程序时会遇到某个功能多次使用的情况,比如弹出框.这个时候大家首先想到的是组件化开发,就是把弹出框封装成一个组件,然后哪里使用哪里就调用,对,看来大家都是有思路的人,但是要怎样实现 ...