从零开始学android<数据存储(4)Sqlite数据库存储.三十八.>

从前几章我们分别学习了属性文件存储输数据,内储存存储数据,和外部储存存储数据,今天我们来学习一下android 轻量级数据库Sqlite数据库的数据存储


首先必须了解SQLiteOpenHelper

SQLiteDatabase类本身只是一个数据库的操作类,但是如果要想进行数据库的操作,还需要一个android.database.sqlite.SQLiteOpenHelper类帮助下才可以取得进行,但是,SQLiteOpenHelper类是一个抽象类,所以要使用的时候需要定义其子类,并且在子类中要覆写相应的抽象方法

让一个类继承SQLiteOpenHelper 并=并且复写SQLiteOpenHelper的方法实现

SQLiteOpenHelper常用的方法

1
public SQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version)
构造
通过此构造方法指明要操作的数据库名称以及数据库的版本编号
2
public synchronized void close()
普通
关闭数据库
3
public synchronized SQLiteDatabase getReadableDatabase()
普通
以只读的方式创建或者打开数据库
4
public synchronized SQLiteDatabase getWritableDatabase()
普通
以修改的方式创建或者打开数据库
5
public abstract void onCreate(SQLiteDatabase db)
普通
创建数据表
6
public void onOpen(SQLiteDatabase db)
普通
打开数据表
7
public abstract void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
普通
更新数据表
三个回调方法

1onCreate() :在第一次使用数据库的时候会调用此方法生成相应的数据 库表,但是此方法并不是说是在实例化 SQLiteOpenHelper 类的对象时 调用,而是通过对象调用了 getReadableDatabase() getWritableDatabase() 方法时才会调用;
2 onUpgrade() :当数据库需要进行升级的时候,会调用此方法,一般可 以在此方法之中将数据表删除,并且在删除表之后往往会调用 onCreate() 方法以重新创建新的数据表;
3 open() :当数据库打开的时候会调用此方法,但是一般情况下用户不需 要覆写此方法。

接下来我们几个列子来学习下sqlite数据库



首先是数据库的创建


html文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="108dp"
        android:text="建立数据库" />

</RelativeLayout>
JAVA文件
1让一个类继承SQLiteOpenHelper

2主类

package com.example.sqllitedatabase1;

import java.sql.Date;

import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;

public class SqlIteOpenHelper extends SQLiteOpenHelper {

	public static final String DBNAME = "flyou";//数据库名称
	public static final int VERSION = 2;//数据库版本
	public static final String TABLENAME = "user_info";//数据表名称

	public SqlIteOpenHelper(Context context) {
		super(context, DBNAME, null, VERSION);
		// TODO Auto-generated constructor stub
	}

	@Override
	public void onCreate(SQLiteDatabase db) {
		// TODO Auto-generated method stub
//sql语句创建数据表
		String sql = "CREATE TABLE " + TABLENAME + " ("
				+ "id			INTEGER 		PRIMARY KEY ,"
				+ "name		VARCHAR(50)		NOT NULL ," + "birthday	DATE			NOT NULL)";// SQL语句
		db.execSQL(sql);
	}

	@Override//更新回掉操作
	public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
		// TODO Auto-generated method stub
		String sql = "DROP TABLE IF EXISTS " + TABLENAME;
		db.execSQL(sql);
		onCreate(db);
	}


}


运行后可以在data/data/包名/databases中查看数据库文件


2.使用helper类数据库的增加,删除,更新操作


同样需要一个类继承SQLiteOpenHelper

另外可以定义一个操作数据库的类来实现操作

HTML文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView
        android:id="@+id/textView1"
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值