SQLite是android提供的一个关系型数据库。今天要总结的主要内容就是它。

在使用SQLite的时候用到的抽象类是

SQLiteOpenHelper

有关这个函数的详细内容你可以在Android的官方文档中找到:http://developer.android.com/reference/android/database/sqlite/SQLiteOpenHelper.html

public SQLiteDatabase getReadableDatabase ()

Added in API level 1

Create and/or open a database. This will be the same object returned by getWritableDatabase() unless some problem, such as a full disk, requires the database to be opened read-only. In that case, a read-only database object will be returned. If the problem is fixed, a future call togetWritableDatabase() may succeed, in which case the read-only database object will be closed and the read/write object will be returned in the future.

Like getWritableDatabase(), this method may take a long time to return, so you should not call it from the application main thread, including fromContentProvider.onCreate().

Returns
  • a database object valid until getWritableDatabase() or close() is called.
Throws
SQLiteException if the database cannot be opened

他是用于创建或者打开一个数据库

要使用SQLiteOpenHelper这个类我们必须自己新建一个类来继承他才能使用
下面记录详细的学习过程:
首先打开Eclipse之后新建一个android的项目文件之后新建一个包,名字任意取,只要符合android的命名规则即可
之后在里面新建一个类叫DatabaseHelper让他继承刚才我们提到过的SQLiteOpenHelper这个类,复写其中的抽象方法
package sqlite;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;public class DatabaseHelper extends SQLiteOpenHelper{public DatabaseHelper(Context context, String name, CursorFactory factory,int version) {super(context, name, factory, version);// TODO Auto-generated constructor stub}@Overridepublic void onCreate(SQLiteDatabase arg0) {// TODO Auto-generated method stub}@Overridepublic void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {// TODO Auto-generated method stub}}

注意在其中必须添加一个构造函数DatabaseHelper,其中有四个参数Context指的就是他的Activity参数,第二个参数指的是表的名字,第三个参数一般传的是空值,最后一个指的是当前的数据库的版本。数据库的版本是正数而且必须是递增的。

之后我们在构造两个构造函数
private 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,int version){this(context,name,null,version);}public DatabaseHelper(Context context,String name){this(context,name,VERSION);}

其中第二个构造函数是调用第一个构造函数,他自身含有三个参数

第三个构造函数是调用第二个构造函数,他自身含有两个参数
其中在第三个构造函数中我们可以看出来第三个实参用的是我们自己定义的一个整型常量他的默认值是1;
之后我们来关注OnCreate()函数
@Overridepublic void onCreate(SQLiteDatabase arg0) {// TODO Auto-generated method stubSystem.out.println("create a Database");arg0.execSQL("create table user(id int , name varchar(20))");}

我们在其中添加一句打印输出的语句和一个execSQL函数,它是用于执行SQL语句

在这里我们通过OnCreate这个函数来建立一张表,它的名字我们取名为user,它包含了两项,其中之一是用户的id,另一项是用户的名字我们让他占用20个字节
之后我们在XML文件中编写好Activity的布局文件
之后可以得到如下图所示的界面:
这个界面的代码对应如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent">
<TextView  android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello_world"/>
<Buttonandroid:id="@+id/createDatabase"android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="createDatabase"/><Buttonandroid:id="@+id/updateDatabase"android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="updateDatabase"/><Buttonandroid:id="@+id/insert"android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="insert"/>
<Buttonandroid:id="@+id/update"android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="update"/>
<Buttonandroid:id="@+id/query"android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="query"/></LinearLayout>
这个时候点击createDatabase用于更新数据库,点击updateDatebase用于更新数据库,顾名思义:insert,query,update分别对应于插入,查询,更新操作。

下面我们来详细分析一下他们是如何实现的:
基本思路自然是现在MainActivity里面设置如上所示的几个按钮,之后为他们绑定好监听器即可:
使用findViewById()实现
createButton = (Button)findViewById(R.id.createDatabase);updateButton = (Button)findViewById(R.id.updateDatabase);insertButton = (Button)findViewById(R.id.insert);updateRecordButton = (Button)findViewById(R.id.update);queryButton = (Button)findViewById(R.id.query);createButton.setOnClickListener(new CreateListener());updateButton.setOnClickListener(new UpdateListener());insertButton.setOnClickListener(new InsertListener());updateRecordButton.setOnClickListener(new UpdateRecordListener());queryButton.setOnClickListener(new QueryListener());

为每一个按钮实现一个监听器:

class CreateListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubDatabaseHelper dbHelper =new DatabaseHelper(MainActivity.this,"test_db");SQLiteDatabase db =dbHelper.getReadableDatabase();}}

上面实现的是建立一个数据库的功能,这里我们引入了刚才建立的DatabaseHelper这一个类,其中MainActivity是该类的名字,数据库的名字我们叫做test_db;这里我们调用刚才DatabaseHelper两个参数的构造函数
之后使用SQLiteDatabase 读取数据库

实现更新数据库的操作:
class UpdateListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubDatabaseHelper dbHelper =new DatabaseHelper(MainActivity.this,"test_db",2);SQLiteDatabase db =dbHelper.getReadableDatabase();}}

和上面的那个操作差不多,唯一不同的是调用的构造函数不同

class InsertListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubContentValues values =new ContentValues();values.put("id", 1);values.put("name", "LiHua");DatabaseHelper dbHelper= new DatabaseHelper(MainActivity.this,"test_db",2);SQLiteDatabase db = dbHelper.getWritableDatabase();db.insert("user", null, values);} }

这里我们使用到了ContentValues函数,这个在数据库当中是很常用的函数他用来对数据库的成员进行赋值(或许说的不准确)是键值对,前面是关键字,后面对应的是输入的值

由于插入是要写所以对应的是getWritableDatabase()这个函数
使用了insert函数,其第一个参数名“user”对应的是表格名字,第三个对应的是设置的键值对
更新数据库中的值
class UpdateRecordListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubContentValues values =new ContentValues();values.put("name", "zhangsan");DatabaseHelper dbHelper= new DatabaseHelper(MainActivity.this,"test_db",2);SQLiteDatabase db = dbHelper.getWritableDatabase();db.update("user", values, "id=?", new String[]{"1"});}}

思路仍然是一样的:

使用ContentValues 
注意这里的更新是真的某个特定的值来更新,不是对数据库进行更新,就比如说这里就是对数据库的对应id=1的数据的用户名进行更改
id="?"是占位符,他有几个之后的string数组也要有几个
class QueryListener implements OnClickListener{@Overridepublic void onClick(View v) {// TODO Auto-generated method stubDatabaseHelper dbHelper = new DatabaseHelper(MainActivity.this,"test_db");SQLiteDatabase db = dbHelper.getReadableDatabase();
                        //相当于查询语句  user是表格的名字Cursor cursor = db.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null);while(cursor.moveToNext()){String name = cursor.getString(cursor.getColumnIndex("name"));System.out.println("query--->" + name);}}}

Android中有关数据库SQLite的介绍相关推荐

  1. android中的数据库操作(SQLite)

    android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库   an ...

  2. android中的数据库操作

    android中的数据库操作 android中的应用开发很难避免不去使用数据库,这次就和大家聊聊android中的数据库操作. 一.android内的数据库的基础知识介绍 1.用了什么数据库 andr ...

  3. android不同机型编译不同so,如何使用adb命令查看android中的数据库

    1,进入到控制台中,输入adb shell,进入到命令模式的环境中 2,输入:cd /data/data/ 3, 选择你所在的数据库文件,比如我的com.android.homework, 输入命令: ...

  4. android开发中的数据库SQLite的使用

    其实学习android很久了,关于数据存储,之前学习的时候也一同学习过,编程这些东西很久没用都忘得差不多了,最近做个项目要用到,所以又学习了一遍. android中关于数据的存储有好几种,这次主要是S ...

  5. Python中使用数据库SQLite

    参考原文 廖雪峰Python教程 使用SQLite SQLite是一种嵌入式数据库,它的数据库就是一个文件.由于SQLite本身是用C写的,而且体积很小,所以经常被集成到各种应用程序中,甚至在IOS和 ...

  6. Android 学习心得(2)——Android内置数据库SQLite

    一.简介: Android有一个内置数据库SQLite,它是一种轻型数据库,它有五种数据类型:NULL(空型).BLOB(二进制).INTEGER(整型).REAL(浮点型).TEXT(字符串文本), ...

  7. Android 中关于Cursor类的介绍

    来自:http://www.cnblogs.com/TerryBlog/archive/2010/07/05/1771459.html 使用过 SQLite 数据库的童鞋对 Cursor 应该不陌生, ...

  8. android轻量数据库SQLite的使用

    SQLite是一款轻型的数据库,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了.它能够支持 Windows/Linu ...

  9. Python中使用数据库SQLite和MySQL

    一.数据库SQLite 1 建立数据库与建立表 直接来看例子: import sqlite3conn = sqlite3.connect("test.db"); c = conn. ...

最新文章

  1. 2020移动apn接入点哪个快_手机推荐:为什么别人的手机4G网总是比你快?这样设置一下,网速立马飙升...
  2. SpringCloud--Eureka服务注册与发现 Eureka 集群搭建 详细案例!!!
  3. Android 入职感想
  4. 程序员里面开源_开源对年轻程序员意味着什么
  5. MyBatis3源码解析(7)TypeHandler注册与获取
  6. .net与java之争
  7. 【spring boot】启动类启动 错误: 找不到或无法加载主类 com.codingapi.tm.TxManagerApplication 的解决方案...
  8. 苹果mac需牢记的SSH命令
  9. python模拟微信投票_python 模拟微信投票
  10. ID3算法的Python实现
  11. 计算机毛利润的函数,毛利率计算公式
  12. 手机聊天记录备份与恢复的方法汇总
  13. 边缘计算是什么?边缘计算系统的组成及概念
  14. 计算机分享硬盘,共享磁盘是什么怎么设置
  15. Guitar Pro8苹果mac最新版本下载安装教程
  16. Xdebug中文文档-堆栈跟踪
  17. 帆软内置数据集实现决策报表联动
  18. 报表中如何实现不规则布局
  19. Error: Program type already present: android.support.design.widget.CoordinatorLayout$Behavior 预览器异常
  20. 剑指offer面试题(11-20)——java实现

热门文章

  1. 某程序媛哀叹:北京好几套房,家庭收入200多万,但孩子是渣娃,人生没意义了!...
  2. 阿里飞猪搜索技术的应用与创新
  3. 深入理解 Java 虚拟机 - 你了解 GC 算法原理吗
  4. 敏捷开发中如何使用看板方法创造价值
  5. SQL与NoSQL区别
  6. Python的控制语句2
  7. Python的设计目标
  8. JVM---对象的实例化内存布局与访问定位
  9. RK3399 Ubuntu修改任务栏为自动隐藏和修改桌面背景
  10. inspinia中文管理后台_赤峰当地神马推广后台哪里有