Android存储之SQLiteDatbase
SQLiteDatabase的方式会生成一个数据库文件,每个应用最多只对应一个数据库文件,即.db文件。
可以使用很多第三方工具进行打开,查看数据库里的内容。
昨晚试了好几种工具,如navicat,sqlite3,sqlitespy,等,还是觉得sqlitespy比较好用,而且体积也小,才1.7M。文件管理里有对应的sqlitespy。省得以后到处找sqlite的打开工具。
前面的SharedPreferences的存储方式就类似于web应用中的表单的存储。
而SQLiteDatabase类似于把数据存储到Oracle中,只是安卓用是保存到sqlite数据库中而已。
注意点:
sqlite建表sql和Oracle中不同的地方:
Oracle中:
create table usertb (_id integer primary key autoincrement, name text not null , age integer not null , sex text not null )
或者
create or replace table usertb (_id integer primary key autoincrement, name text not null , age integer not null , sex text not null )
sqlite中:
create table if not exists usertb (_id integer primary key autoincrement, name text not null , age integer not null , sex text not null )
一定要加if not exists这个判断,sqlite中已经有了需要建的表,而建表的时候不加if not exists就会报错,因为不能够重复建同样表名的表。
MainActivity.java如下:
package com.example.sqlitedatabasetest; import android.os.Bundle;
import android.app.Activity;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.util.Log; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 每个程序都有自己的数据库 默认情况下是各自互相不干扰
// 创建一个数据库 并且打开
// SQLiteDatabase db = openOrCreateDatabase("user.db", MODE_PRIVATE, null);
// db.execSQL("create table if not exists usertb (_id integer primary key autoincrement, name text not null , age integer not null , sex text not null )");
//// db.execSQL("create table usertb2 (_id integer primary key, name text not null , age integer not null , sex text not null )");
//
// System.out.println("===================>");
// db.execSQL("insert into usertb(name,sex,age) values('张三','女',18)");
// db.execSQL("insert into usertb(name,sex,age) values('李四','女',19)");
// db.execSQL("insert into usertb(name,sex,age) values('王五','男',20)");
// System.out.println("!!!!!!!!!88888888234!!!!!!!!");
// Cursor c = db.rawQuery("select * from usertb", null);
// if (c != null) {
// while (c.moveToNext()) {
// Log.i("info", "_id:" + c.getInt(c.getColumnIndex("_id")));
// Log.i("info", "name:" + c.getString(c.getColumnIndex("name")));
// Log.i("info", "age:" + c.getInt(c.getColumnIndex("age")));
// Log.i("info", "sex:" + c.getString(c.getColumnIndex("sex")));
// Log.i("info", "!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!");
// }
// c.close();
// }
// db.close(); //创建database
SQLiteDatabase db = openOrCreateDatabase("wyl.db", MODE_PRIVATE, null);
db.execSQL("create talbe if not exists wyl_table "
+ " (_id integer primary key autoincrement,"
+ "name text not null,sex text not null");
//
/**
* create table if not exists usertb (_id integer primary key
* autoincrement, name text not null , age integer not null , sex text not null )
*/
db.execSQL("insert into wyl_table (name,sex) values ('wyl','男')");
db.close();
} }
Android存储之SQLiteDatbase的更多相关文章
- Android存储访问及目录
Android存储访问及目录 Android的外部存储 Android支持外部存储(case-insensitive filesystem with immutable POSIX permissio ...
- Android存储之SQLite数据库
Android存储之SQLite数据库数据库 创建数据库 package --; import android.content.Context; import android.database.sql ...
- Android存储路径你了解多少?
在了解存储路径之前,先来看看Android QQ的文件管理界面,了解一下QQ的数据文件路径来源,到底是来源于什么地方? 手Q文件管理对应存储目录 我的文件:是指放在QQ指定目录下的文件:/tencen ...
- Android 存储(本地存储 SD卡存储 SharedPreference SQLite ContentProvider)
本文出自:http://blog.csdn.net/dt235201314/article/details/73176149 源码下载欢迎Star(updating):https://github.c ...
- 一篇文章搞懂android存储目录结构
前言 前两天因为开发一个app更新的功能,我将从服务器下载的apk文件放在了内部存储目录(测试手机为小米,路径为:data/user/0/packagename/files)下面,然后安装的时候一直安 ...
- android存储方式的应用场景
作为一个完整的应用程序,数据存储操作是必不可少的.因此,Android系统一共提供了四种数据存储方式.分别是:SharePreference.文件存储.SQLite. Content Provider ...
- Android开发学习——android存储
Android的存储 内部存储空间RAM内存:运行内存,相当于电脑的内存ROM内存:存储内存,相当于电脑的硬盘外部存储空间 SD卡:相当于电脑的移动硬盘 * 2.2之前,sd卡路径:sdcard ...
- Android存储
Android的四种数据存储方式: 1.SharedPrefrences 2.SQLite 3.Content Provider 4.File SharedPrefrences: 1.是一种轻型的数据 ...
- 利用反射得到android存储路径
获得android手机的存储路径: public String getPrimaryStoragePath(){ try{ StorageManager sm = (StorageManager) c ...
随机推荐
- mysql数据迁移
使用mysqldump mysqldump -host=host1 -uroot -p123456 -opt sourceDb| mysql -host=host2 -uroot -p123 -C t ...
- Android 开发笔记“context和getApplicationContext”
在android中常常会遇到与context有关的内容 浅论一下context : 在语句 AlertDialog.Builder builder = new AlertDialog.Builder( ...
- Page Cache, the Affair Between Memory and Files
Previously we looked at how the kernel manages virtual memory for a user process, but files and I/O ...
- npm常用命令详解
~~~https://www.npmjs.org/有比较全的api文档 NPM是一个Node包管理和分发工具,已经成为了非官方的发布Node模块(包)的标准.有了NPM,可以很快的找到特定服务要使用的 ...
- android天气查询(二)之网络json数据的获取
前面一篇文章介绍了如何使用ksoap获取天气信息,但是使用的网络资源受到了限制,所以我们这里会采用第二种方法,可以无限制的获取.http://m.weather.com.cn/data/1010101 ...
- libCurl的文件上传
最近在需要使用curl的上传功能,使用libCurl来实现.因此,先使用curl命令操作,然后再使用libCurl实现. 基于Http协议的文件上传的标准方法是: 基于POST Form的文件上传 ...
- Sicily-1050 深度优先搜索
一. 题意 给出5个数和4则运算,看能不能算出目标值出来,如果算不出来就算出比目标值小的最大值.深搜:每一步选两个数做运算,然后算出的结果作为下一步的其中一个操作数.每一步选数有C(5,2) ...
- Candy Sharing Game(模拟搜索)
Candy Sharing Game Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Other ...
- uestc 250 数位dp(水)
/* 数位dp 水题 开两维一个记录长度,一个记录上一个数 */ #include<stdio.h> #include<string.h> #define N 13 int d ...
- HDU 2665(Kth number-区间第k大[内存限制+重数])
Kth number Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Tota ...