Android SQLiteOpenHelper Sqlite数据库的创建与打开
Android Sqlite数据库是一个怎样的数据库?
答:是一种嵌入式小型设备,移动设备,的数据库,应用在穿戴设备(例如:智能手表,计算手环 等等),移动设备(例如:Android系统类型的手机 等等),属于嵌入式关系型数据库。
在Android开发过程中,只需调用Android所提供的Sqlite API接口,底层会调用Sqlite.c 程序去生成数据库,创建表字段 等等;
虽然在Android Sqlite3 支持了 null,integer,real,char(n),varchar(n),decimal(p,s),这些类型,但是 请注意:除了ID唯一主键是integer类型,其他所有类型,最后都会变成TEXT类型。
在Android API中提供了,SQLiteOpenHelper对数据库创建,管理操作等;
创建表的语句:create table student_table(_id integer primary key autoincrement, name text);
import android.content.Context;
import android.database.DatabaseErrorHandler;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class MySQLiteOpenHelper extends SQLiteOpenHelper {
/**
* 数据库的名称
*/
private static final String DATABASE_NAME = "PersonDB.db";
/**
* 数据库的版本号,以后要升级数据库,修改版本号为 +1 即可
*/
private static final int DATABASE_VERSION = 1;
private static MySQLiteOpenHelper instance;
/**
* 单例模式
* @param context 传入上下文
* @return 返回MySQLiteOpenHelper对象
*/
public static MySQLiteOpenHelper getInstance(Context context) {
if (null == instance) {
synchronized (MySQLiteOpenHelper.class) {
if (null == instance) {
instance = new MySQLiteOpenHelper(context, DATABASE_NAME, null, DATABASE_VERSION);
}
}
}
return instance;
}
// 构造方法不对外暴露
private MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) {
super(context, name, factory, version);
}
// 构造方法不对外暴露
private MySQLiteOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version, DatabaseErrorHandler errorHandler) {
super(context, name, factory, version, errorHandler);
}
// 初始化操作,会执行onCreate
@Override
public void onCreate(SQLiteDatabase db) {
// 创建一个 student_table表
db.execSQL("create table student_table(_id integer primary key autoincrement, name text);");
}
// 用于升级数据库,当Version 变动了,就会调用onUpgrade方法
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
sqLiteOpenHelper.getWritableDatabase();,没有数据库就创建数据库,有数据库就打开数据库。
@Override
public void onClick(View v) {
MySQLiteOpenHelper sqLiteOpenHelper = MySQLiteOpenHelper.getInstance(MainActivity.this);
sqLiteOpenHelper.getWritableDatabase();
}
生成完成:
看看表结构:
谢谢大家的观看,更多精彩技术博客,会不断的更新,请大家访问,
刘德利CSDN博客, http://blog.csdn.net/u011967006
Android SQLiteOpenHelper Sqlite数据库的创建与打开的更多相关文章
- Android SQLiteOpenHelper Sqlite数据库升级onUpgrade
Android Sqlite数据库升级,在Android APP开发之中,非常常见: 在确定原来的数据库版本号之后,在原来数据库版本号+1,就会执行onUpgrade方法,进行数据库升级操作: 在on ...
- Android开发SQLite数据库的创建
package com.example.db; import android.content.Context; import android.database.sqlite.SQLiteDatabas ...
- android基础---->SQLite数据库的使用
SQLite 一个非常流行的嵌入式数据库,它支持 SQL 语言,并且只利用很少的内存就有很好的性能.此外它还是开源的,任何人都可以使用它.许多开源项目((Mozilla, PHP, Python)都使 ...
- Android中SQLite数据库操作(1)——使用SQL语句操作SQLite数据库
下面是最原始的方法,用SQL语句操作数据库.后面的"Android中SQLite数据库操作(2)--SQLiteOpenHelper类"将介绍一种常用的android封装操作SQL ...
- android 一个SQLite数据库多个数据表的基本使用框架 (带demo)
android 一个SQLite数据库多个数据表(带demo) 前言 demo演示 一.搭建 二.建立实体类 三.建立数据库操作类 ...
- Android实现SQLite数据库联系人列表
Android实现SQLite数据库联系人列表 开发工具:Andorid Studio 1.3 运行环境:Android 4.4 KitKat 工程内容 实现一个通讯录查看程序: 要求使用SQLite ...
- android中sqlite数据库的基本使用和添加多张表
看了很多关于android使用sqlite数据库的文章,很多都是介绍了数据库的建立和表的建立,而表通常都是只建立一张,而实际情况我们用到的表可能不止一张,那这种情况下我们又该怎么办呢,好了,下面我教大 ...
- Adobe AIR中使用Flex连接Sqlite数据库(1)(创建数据库和表,以及同步和异步执行模式)
系列文章导航 Adobe AIR中使用Flex连接Sqlite数据库(1)(创建数据库和表) Adobe AIR中使用Flex连接Sqlite数据库(2)(添加,删除,修改以及语句参数) Adobe ...
- Qt for Android 打包 SQLite 数据库
Qt for Android 调用 SQLite 数据库时, 怎样将已经存在的数据库附加到 APK 中? 直接在你项目里面的Android源码的根目录下新建一个文件夹assets, 数据库就可以放里面 ...
随机推荐
- Containerpilot 配置文件模板
{ "consul": "{{ .CONSUL }}:8500", "logging": { "level": &quo ...
- XtraBackup 备份原理
来着淘宝技术: http://mysql.taobao.org/monthly/2016/03/07/ https://github.com/alibaba/AliSQL 前言 Percona Xtr ...
- logging的使用
[logging的使用] import logging # 创建一个logger logger = logging.getLogger('mylogger') logger.setLevel(logg ...
- 调试PHP如何让浏览器提示错误
php.ini中的display_errors的值改为On:或者php代码页顶部加上ini_set("display_errors", "On"); error ...
- At least one JAR was scanned for TLDs yet contained no TLDs.
Tomcat提示如下: At least one JAR was scanned for TLDs yet contained no TLDs. =========================== ...
- DFT
离散傅里叶变换(Discrete Fourier Transform,缩写为DFT),是傅里叶变换在时域和频域上都呈离散的形式, 将信号的时域采样变换为其DTFT的频域采样.在形式上,变换两端(时域和 ...
- fieldOfView
fieldOfView 属性 fieldOfView:Number 语言版本: ActionScript 3.0 运行时版本: Flash Player 10, AIR 1.5 为三维视野指定一个 ...
- HttpClient实战二:单线程和多线程连接池实例
为什么使用HTTP连接池? 随着系统架构风格逐渐向前后端分离架构,微服务架构转变,RestFul风格API的开发与设计,同时SpringMVC也很好的支持了REST风格接口.各个系统之间服务的调用大多 ...
- 基于快速排序的数组划分:2组 3组 K组(sort color)大小写排序 · Partition Array
2组: [抄题]: 给出一个整数数组 nums 和一个整数 k.划分数组(即移动数组 nums 中的元素),使得: 所有小于k的元素移到左边 所有大于等于k的元素移到右边 返回数组划分的位置,即数组中 ...
- 15-js提交表单的简单检测实例
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...