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

  1. package com.example.sqlite.db;
  2.  
  3. import android.content.Context;
  4. import android.database.sqlite.SQLiteDatabase.CursorFactory;
  5. import android.database.sqlite.SQLiteDatabase;
  6. import android.database.sqlite.SQLiteOpenHelper;
  7. import android.util.Log;
  8.  
  9. /**
  10. * DatabaseHelper作为一个访问SQLite的助手类,提供两个方面的功能,
  11. * 第一,getReadableDatabase(),getWritableDatabase()可以获得SQLiteDatabse对象,通过该对象可以对数据库进行操作
  12. * 第二,提供了onCreate()和onUpgrade()两个回调函数,允许我们在创建和升级数据库时,进行自己的操作
  13. * @author Administrator
  14. *
  15. */
  16. public class DatabaseHelper extends SQLiteOpenHelper{
  17.  
  18. public static final int VERSION = 1;
  19. public DatabaseHelper(Context context, String name, CursorFactory factory,
  20. int version) {
  21. super(context, name, factory, version);
  22. // TODO Auto-generated constructor stub
  23. }
  24. public DatabaseHelper(Context context, String name){
  25. this(context, name, VERSION);
  26. Log.i("debug", "DatabaseHelper");
  27. }
  28. public DatabaseHelper(Context context, String name, int version){
  29. this(context, name, null, version);
  30. }
  31.  
  32. @Override
  33. public void onCreate(SQLiteDatabase db) {
  34. // TODO Auto-generated method stub
  35. Log.i("debug", "create a database");
  36. //执行SQL语句
  37. db.execSQL("create table user (id int, name varchar(20))");
  38. }
  39. @Override
  40. public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
  41. // TODO Auto-generated method stub
  42. Log.i("debug", "Upgrade a database");
  43. }
  44. }

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

布局文件

  1. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  2. xmlns:tools="http://schemas.android.com/tools"
  3. android:orientation="vertical"
  4. android:layout_width="match_parent"
  5. android:layout_height="match_parent" >
  6.  
  7. <Button
  8. android:id="@+id/create_db"
  9. android:layout_width="match_parent"
  10. android:layout_height="wrap_content"
  11. android:text="@string/create_db"/>
  12. <Button
  13. android:id="@+id/update_db"
  14. android:layout_width="match_parent"
  15. android:layout_height="wrap_content"
  16. android:text="@string/update_db"/>
  17. <Button
  18. android:id="@+id/insert"
  19. android:layout_width="match_parent"
  20. android:layout_height="wrap_content"
  21. android:text="@string/insert"/>
  22. <Button
  23. android:id="@+id/update"
  24. android:layout_width="match_parent"
  25. android:layout_height="wrap_content"
  26. android:text="@string/update"/>
  27. <Button
  28. android:id="@+id/query"
  29. android:layout_width="match_parent"
  30. android:layout_height="wrap_content"
  31. android:text="@string/query"/>
  32. <Button
  33. android:id="@+id/delete"
  34. android:layout_width="match_parent"
  35. android:layout_height="wrap_content"
  36. android:text="@string/delete"/>
  37.  
  38. </LinearLayout>

在Activity处理代码

  1. package com.example.sqlite;
  2.  
  3. import com.example.sqlite.db.DatabaseHelper;
  4. import android.os.Bundle;
  5. import android.app.Activity;
  6. import android.content.ContentValues;
  7. import android.database.Cursor;
  8. import android.database.sqlite.SQLiteDatabase;
  9. import android.util.Log;
  10. import android.view.Menu;
  11. import android.view.View;
  12. import android.view.View.OnClickListener;
  13. import android.widget.Button;
  14.  
  15. /**
  16. * SQLite的创建、更新、修改、插入、查询、删除操作
  17. * @author Administrator
  18. *
  19. */
  20. public class SqliteActivity extends Activity {
  21.  
  22. private Button create_db;
  23. private Button update_db; //更新数据库的版本号
  24. private Button insert;
  25. private Button update;
  26. private Button query;
  27. private Button delete;
  28. @Override
  29. protected void onCreate(Bundle savedInstanceState) {
  30. super.onCreate(savedInstanceState);
  31. setContentView(R.layout.activity_sqlite);
  32. create_db = (Button)findViewById(R.id.create_db);
  33. update_db = (Button)findViewById(R.id.update_db);
  34. insert = (Button)findViewById(R.id.insert);
  35. update = (Button)findViewById(R.id.update);
  36. query = (Button)findViewById(R.id.query);
  37. delete = (Button)findViewById(R.id.delete);
  38. create_db.setOnClickListener(new CreateListener());
  39. update_db.setOnClickListener(new UpdateDBListener());
  40. insert.setOnClickListener(new InsertListener());
  41. update.setOnClickListener(new UpdateListener());
  42. query.setOnClickListener(new QueryListener());
  43. delete.setOnClickListener(new Deletelistener());
  44. }
  45.  
  46. class CreateListener implements OnClickListener{
  47.  
  48. @Override
  49. public void onClick(View arg0) {
  50. // TODO Auto-generated method stub
  51. Log.i("debug", "on create db");
  52. DatabaseHelper dbHelper = new DatabaseHelper(SqliteActivity.this, "text_mars_db");
  53. //只有调用了DatabaseHelper的getReadableDatabase()或getWritableDatabase()才会创建数据库
  54. SQLiteDatabase db = dbHelper.getWritableDatabase();
  55. }
  56.  
  57. }
  58. /**
  59. * 更新数据库的版本号
  60. * @author Administrator
  61. *
  62. */
  63. class UpdateDBListener implements OnClickListener{
  64.  
  65. @Override
  66. public void onClick(View arg0) {
  67. // TODO Auto-generated method stub
  68. Log.i("debug", "on update db");
  69. DatabaseHelper dbHelper = new DatabaseHelper(SqliteActivity.this, "text_mars_db", 2);
  70. SQLiteDatabase db = dbHelper.getReadableDatabase();
  71. }
  72.  
  73. }
  74.  
  75. class InsertListener implements OnClickListener{
  76.  
  77. @Override
  78. public void onClick(View v) {
  79. // TODO Auto-generated method stub
  80. Log.i("debug", "insert db");
  81. ContentValues values = new ContentValues();
  82. //向该对象插入键值对,其中键是列名,值是希望插入这一列的值,值的数据类型必须一致
  83. values.put("id", 1);
  84. values.put("name", "zhang");
  85. DatabaseHelper dbHelper = new DatabaseHelper(SqliteActivity.this, "text_mars_db");
  86. SQLiteDatabase db = dbHelper.getWritableDatabase();
  87. //调用insert方法插入数据
  88. db.insert("user", null, values);
  89. }
  90.  
  91. }
  92. class UpdateListener implements OnClickListener{
  93.  
  94. @Override
  95. public void onClick(View v) {
  96. // TODO Auto-generated method stub
  97. Log.i("debug", "update db");
  98. DatabaseHelper dbHelper = new DatabaseHelper(SqliteActivity.this, "text_mars_db");
  99. SQLiteDatabase db = dbHelper.getWritableDatabase();
  100. ContentValues values = new ContentValues();
  101. values.put("name", "zhangsanfeng");
  102. //第一个参数是要更新的表名
  103. //第二个参数是一个ContentValeus对象
  104. //第三个参数是where子句
  105. db.update("user", values, "id=?", new String[]{"1"});
  106. }
  107.  
  108. }
  109. class QueryListener implements OnClickListener{
  110.  
  111. @Override
  112. public void onClick(View v) {
  113. // TODO Auto-generated method stub
  114. Log.i("debug", "query db");
  115. DatabaseHelper dbHelper = new DatabaseHelper(SqliteActivity.this, "text_mars_db");
  116. SQLiteDatabase db = dbHelper.getReadableDatabase();
  117. Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);
  118. int count = cursor.getCount();
  119. System.out.println("query---count = >" + count);
  120. while(cursor.moveToNext()){
  121. String name = cursor.getString(cursor.getColumnIndex("name"));
  122. System.out.println("query--->" + name);
  123. }
  124. }
  125.  
  126. }
  127. class Deletelistener implements OnClickListener{
  128.  
  129. @Override
  130. public void onClick(View v) {
  131. // TODO Auto-generated method stub
  132. Log.i("debug", "delete db");
  133. DatabaseHelper dbHelper = new DatabaseHelper(SqliteActivity.this, "text_mars_db");
  134. SQLiteDatabase db = dbHelper.getWritableDatabase();
  135. db.delete("user", "id=?", new String[]{"1"});
  136. }
  137.  
  138. }
  139. @Override
  140. public boolean onCreateOptionsMenu(Menu menu) {
  141. // Inflate the menu; this adds items to the action bar if it is present.
  142. getMenuInflater().inflate(R.menu.activity_sqlite, menu);
  143. return true;
  144. }
  145.  
  146. }

运行效果

样例代码

点击打开链接

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. HDOJ 5088 Revenge of Nim II 位运算

    位运算.. .. Revenge of Nim II Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Ja ...

  2. B4A的软件下载

    http://pan.baidu.com/share/home?uk=909467506#category/type=0

  3. VC Office2007界面对话框实现

    我们知道VS2008SP1之后,MFC就多了一个功能包,可以快速的建立一个ribbon的界面,视觉样式可以在office 2007蓝.黑等颜色之间切换,这对于单文档/多文档做界面非常方便,而且也蛮好看 ...

  4. 73_leetcode_Construct Binary Tree from Inorder and Postorder Traversal

    Given inorder and postorder traversal of a tree, construct the binary tree 1:中序和后序遍历构成一棵树.2:採用递归的方法. ...

  5. QT调用CURL

    QProcess *mProcess; QStringList arguments; arguments<<"--disable-epsv" <<" ...

  6. QDockWidget嵌套布局详解-实现Visual Studio布局

    概述 许多工程软件,如Qt Creator,VS,matlab等,都是使用dock布局窗口,这样用户可以自定义界面,自由组合窗口. Qt的嵌套布局由QDockWidget完成,用Qt Creator拖 ...

  7. Java开源运行分析工具(转)

      FProfiler  FProfiler是一个非常快的Java profiler.它利用BCEL和log4j来记录每个方法从开始到结尾的日记.FProfiler可以用来在你的应用程序,Servle ...

  8. Swift - 常用文件目录路径获取(Home目录,文档目录,缓存目录等)

    当前位置: 首页 > 编程社区 > Swift > Swift - 常用文件目录路径获取(Home目录,文档目录,缓存目录等) Swift - 常用文件目录路径获取(Home目录,文 ...

  9. delphi指针简单入门

    delphi指针简单入门:         看一个指针用法的例子:     1         var     2             X,   Y:   Integer;       //   ...

  10. 头文件 boost/cstdint.hpp

    Header boost/cstdint.hpp 头文件 boost/cstdint.hpp  头文件 <boost/cstdint.hpp> 提供了用于编写要求指定整数宽度的可移植代码的 ...