数据存储

数据存储
SQLite数据库存储
简介:无数据库管理引擎,独立DB文件存在的
sqlite3工具
>sqlite3 db_name :启动数据库工具
sqlite>.help
sqlite>.databases
sqlite> .tables
sqlite> .schema table_name
sqlite>标准sql语句
sqlite> .read   c:/aa.sql 导入sql语句
sqlite> .exit
SQL语包
建表语句:CREATE TABLE news(_id integer primary key autoincrement title text,content text,path text,time long)
更新表:alter table 表名 ADD COLUMN degree float;给表插入数据类型为float的degree字段
删除表语句:drop table if exists 表名;
插入语句: insert into 表名(字段名,字段名) values(添加的内容,添加的内容);
update语句:update news set title = abc where _id = 1
delete语句:delete from news where _id = 2
Select语句:select title,content,path from news order by _id desc
常用函数
日期函数
current_date: 当前日期
current_time: 当前时间
current_timestamp: 当前的日期时间
datetime(current_timestamp,'localtime'): 显示本地日期时间
字符函数
length(string)
substr(string,int start,int length)
replace(string,relaceString,newString)
统计
avg(fieldname)
count(fieldname)
max(fieldName)
min(fieldName)
sum(fieldName)
分页查询
前n条数据: select * from table_name limit 1
从m开始显示n条数据:  select * from table_name limit m,n
数据库分页查询
分页SQL:select * from table limit offset,length
统计SQL: select count(*) from table
分页条件
private int offset = 0;// 偏移量
private int pageSize = 10; // 每页的条数
private int pageCount = 0;// 总页数
private int rowCount = 0;// 参与分页的总条数
private int curPage = 1;// 当前页
SimpleCursorAdapter
其父类->CursorAdapter
SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to)
cursor中必须存在_id这个列
SimpleCursorAdapter(Context context, int layout, Cursor c, String[] from, int[] to, int flags)
CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER : 2 
CursorAdapter.FLAG_AUTO_REQUERY : 1 
数据库操作类
SQLiteDatabase
SQLiteDatabase等同于JDBC中Connection和Statement的结合体,既代表与数据库的连接,又能用于执行sql语句操作。
SQLiteDatabase openOrCreateDatabase(String path,CursorFactory)
SQLiteDatabase openDatabase (String path, CursorFactory, int flags)
SQLiteDatabase.OPEN_READWRITE 以读写方式打开
SQLiteDatabase.OPEN_READONLY 以只读方式打开
SQLiteDatabase.CREATE_IF_NECESSARY 如果数据库不存在,则创建
insert (String table, String nullColumnHack, ContentValues values)
update (String table, ContentValues values, String whereClause, String[] whereArgs)
delete (String table, String whereClause, String[] whereArgs)
Cursor query (String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
Cursor rawQuery (String sql, String[] selectionArgs)
execSQL (String sql, Object[] bindArgs)
beginTransaction()
SQLiteOpenHelper
必须实现的方法
SQLiteOpenHelper(Context,String dbName,CursorFactory,int version)
onCreate(SQLiteDatabase db) 第一次创建数据库的初始化方法
执行建表语句
onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) 数据库更新
常用的方法
SQLiteDatabase   getReadableDatabase() 以读写打开数据连接,若磁盘满了以只读返回
SQLiteDatabase   getWritableDatabase() 以读写方式打开数据库

getWritableDatabase()与getReadableDatabase()的区别?
Android使用getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。(getReadableDatabase()方法中会调用getWritableDatabase()方法)
getWritableDatabase() 方法以读写方式打开数据库,一旦数据库的磁盘空间满了,数据库就只能读而不能写,倘若使用的是getWritableDatabase() 方法就会出错。
getReadableDatabase()方法则是先以读写方式打开数据库,如果数据库的磁盘空间满了,就会打开失败,当打开失败后会继续尝试以只读方式打开数据库。如果该问题成功解决,则只读数据库对象就会关闭,然后返回一个可读写的数据库对象。【推荐使用】
Cursor
列相关操作
getColumnCount() 获取总列数
getColumnName(int columnIndex) 获取指定位置的列名
getColumnIndex(String columnName) 获取列的索引位置
isNull(int columnIndex) 指定位置的列是否为null
getType(int columnIndex) 获取指定位置列的数据类型
Cursor.FIELD_TYPE_NULL  null类型
Cursor.FIELD_TYPE_INTEGER   int 类型
Cursor.FIELD_TYPE_FLOAT: float类型
Cursor.FIELD_TYPE_STRING:String类型
Cursor.FIELD_TYPE_BLOB:blob类型,即对象或二进制数据类型
记录相关操作
getCount() 获取总记录数
getString(int columnIndex) 获取指定列的String类型数据
getInt(int columnIndex) 获取指定列的long类型数据
getLong(int columnIndex) 获取指定列的long类型数据
getFloat(int columnIndex) 
getDouble(int columnIndex)
位置移动
boolean moveToNext() 下一行移动
boolean moveToPrevious() 移到初始位置,第一条记录的上方
boolean moveToPosition(int position) 移动到指定位置
boolean moveToLast() 移动到最后一条位置
boolean moveToFirst() 移到第一条位置
move(int offset) 从当前位置向上或下移动n行,负值是向上移动,反之向下
Sqlite数据库特点
[应用内可访问的数据]Android通过 SQLite 数据库引擎来实现结构化数据的存储。在一个app中,任何类都可以访问本app创建的私有数据库,但是在其他应用程序里就不可以。除非该数据库是放在sd卡中.
[小而快]SQLite 数据库是一种用C语言编写的嵌入式数据库,它是一个轻量级的数据库,最初为嵌入式设计的。它是在一些基础简单的语句处理上要比oracle / mysql快很多,而且其对内存的要求很低,在内存中只需要几百KB的存储空间。这是Android中采用 SQLite 数据库的主要原因。
SQLite 支持事务处理功能,Transaction
SQLite 处理速度比MySQL等著名的开源数据库系统更快;它没有服务器进程。 
[跨平台]SQLite 通过单个的文件保存数据库,数据库名即文件名。 该文件是跨平台的,可以自由复制。
[API]JDBC会消耗太多系统资源,所以JDBC对于手机并不合适,因此Android提供了新的API来使用 SQLite 数据库。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值