在Android中存储数据可以用文件、数据库、网络,其中文件和数据库是最常用的,数据库我们常用的就是Sqlite,它是一种经量级的、嵌入式的关系型数据库;在android中当需要操作SQLite数据库的时候需要得到一个SQLiteOpenHelper对象,而SQLiteOpenHelper是一个抽象类,用户需要继承这个类

package com.example.sqlite.db;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log; /**
* DatabaseHelper作为一个访问SQLite的助手类,提供两个方面的功能,
* 第一,getReadableDatabase(),getWritableDatabase()可以获得SQLiteDatabse对象,通过该对象可以对数据库进行操作
* 第二,提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己的操作
* @author Administrator
*
*/
public class DatabaseHelper extends SQLiteOpenHelper{ public static final int VERSION = 1;
public DatabaseHelper(Context context, String name, CursorFactory factory,
int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
public DatabaseHelper(Context context, String name){
this(context, name, VERSION);
Log.i("debug", "DatabaseHelper");
}
public DatabaseHelper(Context context, String name, int version){
this(context, name, null, version);
} @Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
Log.i("debug", "create a database");
//执行SQL语句
db.execSQL("create table user (id int, name varchar(20))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
Log.i("debug", "Upgrade a database");
}
}

下面是对数据库的进行增、删、改、查操作

布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent" > <Button
android:id="@+id/create_db"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/create_db"/>
<Button
android:id="@+id/update_db"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/update_db"/>
<Button
android:id="@+id/insert"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/insert"/>
<Button
android:id="@+id/update"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/update"/>
<Button
android:id="@+id/query"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/query"/>
<Button
android:id="@+id/delete"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/delete"/> </LinearLayout>

在Activity处理代码

package com.example.sqlite;

import com.example.sqlite.db.DatabaseHelper;
import android.os.Bundle;
import android.app.Activity;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button; /**
* SQLite的创建、更新、修改、插入、查询、删除操作
* @author Administrator
*
*/
public class SqliteActivity extends Activity { private Button create_db;
private Button update_db; //更新数据库的版本号
private Button insert;
private Button update;
private Button query;
private Button delete;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_sqlite);
create_db = (Button)findViewById(R.id.create_db);
update_db = (Button)findViewById(R.id.update_db);
insert = (Button)findViewById(R.id.insert);
update = (Button)findViewById(R.id.update);
query = (Button)findViewById(R.id.query);
delete = (Button)findViewById(R.id.delete);
create_db.setOnClickListener(new CreateListener());
update_db.setOnClickListener(new UpdateDBListener());
insert.setOnClickListener(new InsertListener());
update.setOnClickListener(new UpdateListener());
query.setOnClickListener(new QueryListener());
delete.setOnClickListener(new Deletelistener());
} class CreateListener implements OnClickListener{ @Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.i("debug", "on create db");
DatabaseHelper dbHelper = new DatabaseHelper(SqliteActivity.this, "text_mars_db");
//只有调用了DatabaseHelper的getReadableDatabase()或getWritableDatabase()才会创建数据库
SQLiteDatabase db = dbHelper.getWritableDatabase();
} }
/**
* 更新数据库的版本号
* @author Administrator
*
*/
class UpdateDBListener implements OnClickListener{ @Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Log.i("debug", "on update db");
DatabaseHelper dbHelper = new DatabaseHelper(SqliteActivity.this, "text_mars_db", 2);
SQLiteDatabase db = dbHelper.getReadableDatabase();
} } class InsertListener implements OnClickListener{ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("debug", "insert db");
ContentValues values = new ContentValues();
//向该对象插入键值对,其中键是列名,值是希望插入这一列的值,值的数据类型必须一致
values.put("id", 1);
values.put("name", "zhang");
DatabaseHelper dbHelper = new DatabaseHelper(SqliteActivity.this, "text_mars_db");
SQLiteDatabase db = dbHelper.getWritableDatabase();
//调用insert方法插入数据
db.insert("user", null, values);
} }
class UpdateListener implements OnClickListener{ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("debug", "update db");
DatabaseHelper dbHelper = new DatabaseHelper(SqliteActivity.this, "text_mars_db");
SQLiteDatabase db = dbHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("name", "zhangsanfeng");
//第一个参数是要更新的表名
//第二个参数是一个ContentValeus对象
//第三个参数是where子句
db.update("user", values, "id=?", new String[]{"1"});
} }
class QueryListener implements OnClickListener{ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("debug", "query db");
DatabaseHelper dbHelper = new DatabaseHelper(SqliteActivity.this, "text_mars_db");
SQLiteDatabase db = dbHelper.getReadableDatabase();
Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);
int count = cursor.getCount();
System.out.println("query---count = >" + count);
while(cursor.moveToNext()){
String name = cursor.getString(cursor.getColumnIndex("name"));
System.out.println("query--->" + name);
}
} }
class Deletelistener implements OnClickListener{ @Override
public void onClick(View v) {
// TODO Auto-generated method stub
Log.i("debug", "delete db");
DatabaseHelper dbHelper = new DatabaseHelper(SqliteActivity.this, "text_mars_db");
SQLiteDatabase db = dbHelper.getWritableDatabase();
db.delete("user", "id=?", new String[]{"1"});
} }
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_sqlite, menu);
return true;
} }

运行效果

样例代码

点击打开链接

Android开发之Sqlite的使用的更多相关文章

  1. Android开发之SQLite的使用方法

    前言 SQLite是一种轻量级的小型数据库,虽然比较小,但是功能相对比较完善,一些常见的数据库基本功能也具有,在现在的嵌入式系统中使用该数据库的比较多,因为它占用系统资源很少.Android系统中也不 ...

  2. [转]ANDROID开发之SQLite详解

    SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLit ...

  3. ANDROID 开发之 SQLite

    SQLite简介 Google为Andriod的较大的数据处理提供了SQLite,他在数据存储.管理.维护等各方面都相当出色,功能也非常的强大.SQLite具备下列特点: 1.轻量级 使用 SQLit ...

  4. ANDROID开发之SQLite详解

    本文转自:http://www.cnblogs.com/Excellent/archive/2011/11/19/2254888.html

  5. Android开发之旅4:应用程序基础及组件

    引言 为了后面的例子做准备,本篇及接下来几篇将介绍Android应用程序的原理及术语,这些也是作为一个Android的开发人员必须要了解,且深刻理解的东西.本篇的主题如下: 1.应用程序基础 2.应用 ...

  6. Android开发之旅3:android架构

    引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWorld Android 开发之旅:HelloWorld项目的目录结构 我们对android有了个大致的了解,知道如何搭建andr ...

  7. Android开发之Java集合类性能分析

    对于Android开发者来说深入了解Java的集合类很有必要主要是从Collection和Map接口衍生出来的,目前主要提供了List.Set和 Map这三大类的集合,今天Android吧(ard8. ...

  8. Android开发之InstanceState详解

    Android开发之InstanceState详解   本文介绍Android中关于Activity的两个神秘方法:onSaveInstanceState() 和 onRestoreInstanceS ...

  9. Android开发之Git配置

    Android开发之Git配置 1.首先git配置: 输入命令: git config --global user.name "xxx.xx" git config --globa ...

随机推荐

  1. Swift - 给图片添加滤镜效果(棕褐色老照片滤镜,黑白滤镜)

    Core Image是一个强大的滤镜处理框架.它除了可以直接给图片添加各种内置滤镜,还能精确地修改鲜艳程度, 色泽, 曝光等,下面通过两个样例演示如何给UIImage添加滤镜. 1,棕褐色滤镜  -  ...

  2. 【Java TCP/IP Socket】TCP Socket通信中由read返回值造成的的死锁问题(含代码)(转)

    书上示例 在第一章<基本套接字>中,作者给出了一个TCP Socket通信的例子——反馈服务器,即服务器端直接把从客户端接收到的数据原原本本地反馈回去. 书上客户端代码如下: 1 2 3 ...

  3. RESTFul Shiro

    RESTFul与服务没有关系?REST的本质是设计风格,不是技术. REST的URL还是个URL,就是个普通的URL,访问这个URL的时候,先被Servlet Filter(即Shiro 的Filte ...

  4. C++智能指针的实现

    说起智能指针,不少人都不陌生.比方auto_ptr.shared_ptr.unique_ptr.weak_ptr. 依据shared_ptr的功能,自己仿造也实现了个. 对于shared_ptr这样的 ...

  5. java-创建线程的两种方式

    1. 继承Thread类 定义类继承Thread类. 覆盖run方法. 实例化子类对象,调用start()方法,从而调用run方法. 2.实现Runnable接口 定义类实现Runnable接口. 覆 ...

  6. 用DELPHI的RTTI实现数据集的简单对象化

    在<强大的DELPHI RTTI--兼谈需要了解多种开发语言>一文中,我说了一下我用DELPHI的RTTI实现了数据集的简单对象化.本文将详细介绍一下我的实现方法.     首先从一个简单 ...

  7. Mac os 进行Android开发笔记(2)

    Mac OS X 下开发 Android  1> MAC OS Android环境搭建: 2>MAC OS  配置 Andoid ADB: 3>MAC OS 上进行Android真机 ...

  8. 博弈问题之SG函数博弈小结

    SG函数: 给定一个有向无环图和一个起始顶点上的一枚棋子,两名选手交替的将这枚棋子沿有向边进行移动,无法移 动者判负.事实上,这个游戏可以认为是所有Impartial Combinatorial Ga ...

  9. javascript 回调函数应用

    回调函数是什么在学习之前还真不知道js回调函数怎么使用及作用了,下面本文章把我在学习回调函数例子给各位同学介绍一下吧,有需了解的同学不防进入参考. 回调函数原理: 我现在出发,到了通知你”这是一个异步 ...

  10. C++经典书目索引及资源下载

    C++经典书目索引: 严重申明 : 本博文未经原作者(jerryjiang)同意,不论什么人不得转载和抄袭 ! Essential C++ 中文版 层次:0基础 导读:<Essential C+ ...