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 ...
随机推荐
- 创建android 模拟器并在cmd中打开
因为在运行monkeyrunner之前必须先运行相应的模拟器或连接真机,否则monkeyrunner无法连接到设备,运行模拟器有两种方法:1.通过eclipse中执行模拟器 2.在CMD中通过命令调用 ...
- A Byte of Python 笔记(4)控制流:if、for、while、break、continue
第6章 控制流 3种控制流语句-- if for while 默认pyhon使用ASCII码来解释程序的,默认不支持中文,需要在程序的第一行或者第二行声明编码.官方参考具体参考以下三种方式:1. ...
- windows下安装MySQLdb模块
从http://www.codegood.com/downloads 下载mysqldb相应的exe文件直接安装. 我用的是MySQL-python-1.2.3.win32-py2.7.exe
- C# Regex ignoring non-capturing group
E.g I want match the keword "3398" after "red" from the string "This is red ...
- C++ 面向对象学习2 构造方法
Date.h #ifndef DATE_H #define DATE_H class Date{ public: Date(,,);//自定义了构造方法 会覆盖掉默认的无参构造方法 void setD ...
- 实战Windows 7的Windows Media Center
简介 本文讲述如何通过Windows 7的Windows Media Center搭建强劲的综合娱乐电视系统,同时讲述Windows Media Center的实际使用感受,以及如何通过Windows ...
- HDU 2202 最大三角形
题解:先算出凸包,然后枚举凸包上的点计算即可 #include <cstdio> #include <cmath> #include <cstdlib> #incl ...
- Flex疑难小杂症
本文主要解决Flex中一些小问题,收集一些小技巧(来自网络及个人经验) flex自动换行问题 有时候由于label .button等控件中需要用到text属性显示出文本,文本太长就涉及到换行问题,解 ...
- Flex控件初始化问题
有个对话框mx:TitleWindow->mx:TabNavigator->里有两个mx:Tile,每个Tile里都有个datagrid.测试如下:1.对话框显示后,马上动态监测第二个ti ...
- Curling 2.0(dfs回溯)
Curling 2.0 Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 15567 Accepted: 6434 Desc ...