Android 使用sqlite时 可以用到的2个工具类
来源:互联网 发布:vb编程软件下载 编辑:程序博客网 时间:2024/04/29 06:55
package com.xu.my.util.database;/** * Created by xuguang on 14-11-30. */public class Column { public static enum Constraint { UNIQUE("UNIQUE"), NOT("NOT"), NULL("NULL"), CHECK("CHECK"), FOREIGN_KEY("FOREIGN KEY"), PRIMARY_KEY("PRIMARY KEY"); private String value; private Constraint(String value) { this.value = value; } @Override public String toString() { return value; } } public static enum DataType { NULL, INTEGER, REAL, TEXT, BLOB } private String mColumnName; private Constraint mConstraint; private DataType mDataType; public Column(String mColumnName, DataType mDataType, Constraint mConstraint) { this.mColumnName = mColumnName; this.mDataType = mDataType; this.mConstraint = mConstraint; } public String getmColumnName() { return mColumnName; } public Constraint getmConstraint() { return mConstraint; } public DataType getmDataType() { return mDataType; }}
这个Column类封装了 sqlite3 存储数据的类型 和 存储数据的约束条件
sqlite3存储数据的类型
NULL:标识一个NULL值
INTERGER:整数类型
REAL:浮点数
TEXT:字符串
BLOB:二进制数
sqlite3存储数据的约束条件
Sqlite常用约束条件如下:
PRIMARY KEY - 主键:
1)主键的值必须唯一,用于标识每一条记录,如学生的学号
2)主键同时也是一个索引,通过主键查找记录速度较快
3)主键如果是整数类型,该列的值可以自动增长
NOT NULL - 非空:
约束列记录不能为空,否则报错
UNIQUE - 唯一:
除主键外,约束其他列的数据的值唯一
CHECK - 条件检查:
约束该列的值必须符合条件才可存入
DEFAULT - 默认值:
列数据中的值基本都是一样的,这样的字段列可设为默认值
这没有外键约束是因为 在sqlite3会解析外键约束但是不会去执行它,我们如果要在sqlite 里建立外键 需要写3个触发器 insert updata delete 操作之前的触发器
SQLiteTable.java :
package com.xu.my.util.database;import android.database.sqlite.SQLiteDatabase;import android.provider.BaseColumns;import java.util.ArrayList;/** * Created by xuguang on 14-11-30. */public class SQLiteTable { String mTableName; ArrayList<Column> mColumnsDefinitions = new ArrayList<Column>(); public String getmTableName(){ return mTableName; } /** * aotu add primary key BaseColumns._ID * * @param mTableName */ public SQLiteTable(String mTableName){ this.mTableName=mTableName; mColumnsDefinitions.add(new Column(BaseColumns._ID, Column.DataType.INTEGER, Column.Constraint.PRIMARY_KEY)); } public SQLiteTable addColum(Column columnsDefinition){ mColumnsDefinitions.add(columnsDefinition); return this; } public SQLiteTable addColum(String columnName,Column.DataType dataType){ mColumnsDefinitions.add(new Column(columnName,dataType,null)); return this; } public SQLiteTable addColumn(String columnName, Column.Constraint constraint, Column.DataType dataType) { mColumnsDefinitions.add(new Column(columnName, dataType, constraint)); return this; } public void create(SQLiteDatabase db){ String formatter = " %s"; StringBuilder stringBuilder= new StringBuilder(); stringBuilder.append("CREATE TABLE IF NOT EXISTS"); stringBuilder.append(mTableName); stringBuilder.append("("); int columnCount = mColumnsDefinitions.size(); int index = 0; for(Column columnDefinition : mColumnsDefinitions){ stringBuilder.append(columnDefinition.getmColumnName()).append( String.format(formatter,columnDefinition.getmDataType().name())); Column.Constraint constraint=columnDefinition.getmConstraint(); if(constraint != null){ stringBuilder.append(String.format(formatter,constraint.toString())); } if(index < columnCount-1){ stringBuilder.append(","); } index++; } stringBuilder.append(");"); db.execSQL(stringBuilder.toString()); } public void delete(final SQLiteDatabase db) { db.execSQL("DROP TABLE IF EXISTS " + mTableName); }}
这个SQLiteTable类是用来键表的 里面create 就是建立表
如果我们要建立表就可以这样:
public static final SQLiteTable TABLE = new SQLiteTable(TABLE_NAME) .addColum(ID, Column.DataType.INTEGER) .addColum(CATEGORY,Column.DataType.INTEGER) .addColum(JSON,Column.DataType.TEXT); }TABLE.create(db);
这里需要提醒的是: sqlite
REATE TABLE IF NOT EXISTS这条建表语句是 当表不存在时就创建. 如果我们使用
REATE TABLE如果有这张表 这个会返回错误.
Android studio交流QQ群: 375815591 欢迎..
0 0
- Android 使用sqlite时 可以用到的2个工具类
- android开发中常用到的工具类
- Android开发用到的工具
- Android 中图可以用到的图片处理类 BitmapUtils
- Android 中图可以用到的图片处理类 BitmapUtils
- Android sqlite工具类
- android开发可以用到的开源库
- Android可以用到的一大堆颜色
- Android实用的SQLite数据库工具类
- android轻量级数据库SQlite的工具类
- 开发Android项目经常用到的四个工具类
- Android项目开发时常用到的工具类编写
- 关于Android开发过程用到的工具类
- Android开发中常用到的一些工具类整理
- Android开发过程中常用到的工具类HttpUtils,SDCardUtils
- Android Service 一般需要用到的4个类
- SQlite命令行工具的使用
- SQlite命令行工具的使用
- hdu 1003 Max Sum
- 第十四周项目五体会棋盘游戏中的数据储存
- Linux中的用户和用户组管理
- ubuntu开发笔记
- SSH下载地址
- Android 使用sqlite时 可以用到的2个工具类
- POJ2139 Six Degrees of Cowvin Bacon 【Floyd】
- [cocos2dx笔记010]用于UI的事件管理器
- Android多线程分析之四:MessageQueue的实现
- std::ofstream failed
- cocos2dx不响应透明区域事件
- LR:项目中性能测试觉见指标
- Spring框架4的改进
- hdu 1008 Elevator