Android学习-SQLite介绍
来源:互联网 发布:php sqlserver2008 编辑:程序博客网 时间:2024/05/17 05:58
SQLite简介
-支持高达2TB大小的数据库
-以单个文件的形式存在
-以B-Tree的数据结构形式存储在磁盘
特点主要包括:
1>轻量级 一个动态库、单文件
2>独立性 没有依赖、无需安装
3>隔离性 全部在一个文件夹中
4>跨平台 支持众多操作系统
5>多语言接口,支持众多编程语言
关于事务处理的安全性问题:
-通过数据库上的独占性和共享锁来实现独立事务处理
-多个进程可以在同一时间从统一数据库读取数据,但只有一个可以写入数据
关于SQLite的数据类型:
-SQLite支持NULL,INTEGER,REAL,TEXT和Blob数据类型
-依次代表:空值、整型值、浮点值、字符串值、二进制对象
动态数据类型(弱引用)
-当某个值插入到数据库时,SQLite将会检查它的类型,如果该类型与关联的项不匹配,SQLite会尝试将该值转换成该列的类型,如果不能转换,则该值将作为本身的类型存储。
使用须知:
-由于资源占用少、性能良好和零管理成本,嵌入式数据库有了它的用武之地。例如Android,ios
-没有可用于SQLite的网络服务器、只能通过网络共享可能存在文件锁定或者性能问题
-只提供数据库级的锁定
-没有用户账户概念,而是根据文件系统确定所有数据库的权限
SQLiteDatabase:
-提供了一些管理SQLite数据库的类
-提供创建、删除、执行SQL命令,并执行其他常见的数据库管理任务的方法
db.excSQL(sql);//执行任何SQL语句
db.insert(table,nullColumnHack,values)
db.delete(table,whereClasuse,whereArgs)
db.query(table,columns,selection,selectionArgs,groupBy,having,orderBy)
db.rawQuery(sql,selectionArgs)
Cursor:游标接口,提供了遍历查询结果的方法,如移动制作方法move(),获得列值方法getString()等,常用方法
getCount()总记录条数
isFirst()判断是否第一条记录
isLast()判断是否最后一条记录
moveToFirst()移动到第一条记录
moveToLast()移动到最后一条记录
move(int offset)移动到指定记录
moveToNext()移动到下一记录
moveToPrevious()移动到上一条记录
getColumnIndexOrThrow(String columnName)据列名称获得列索引
getInt(int columnIndex)获得指定列索引的int类型值
getString(int columnIndex)获得指定列索引的String类型值
【注意】
使用完Cursor记得close,还要close数据库
使用sql语句操作数据库
public class MainActivity extends AppCompatActivity { protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_layout); //每个程序都有自己的数据库,默认情况下是各自互相不干扰 SQLiteDatabase db = openOrCreateDatabase("user.db",MODE_PRIVATE,null); db.execSQL("create table if not exists tb_user(_id integer primary key autoincrement," + "name text not null,age integer not null)"); db.execSQL("insert into tb_user(name,age) values('张三',15)"); db.execSQL("insert into tb_user(name,age) values('李四',19)"); db.execSQL("insert into tb_user(name,age) values('王五',14)"); Cursor c = db.rawQuery("select * from tb_user",null);//第二个参数是筛选条件 if(c != null){ while(c.moveToNext()){ Log.i("tag", "id_:"+c.getString(c.getColumnIndex("_id"))); Log.i("tag", "name:"+c.getString(c.getColumnIndex("name"))); Log.i("tag", "age:"+c.getInt(c.getColumnIndex("age"))); Log.i("tag", "!!!!!!!!!!!!!!!!!!!!!!!"); } c.close();//记得关闭Cursor } db.close();//最后关闭数据库 }}
Contentvalues:
用于存储一组可以被ContentResolver处理的值
-ContentValues values = new ContentValues();//类似于hashMap key values
-values.put(“name”,”张三”);
-执行对应的sql操作
package com.example.angel.sqlitepro;public class MainActivity extends AppCompatActivity { private static final String TABLENAME = "tb_stu"; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); SQLiteDatabase db = openOrCreateDatabase("user.db",MODE_PRIVATE,null); //使用内置函数 db.execSQL("create table if not exists "+TABLENAME+" (_id integer primary key " + "autoincrement,name text not null,age integer not null)"); ContentValues values = new ContentValues(); values.put("name","张三"); values.put("age",15); long rowId = db.insert(TABLENAME,null,values); values.clear(); values.put("name","李四"); values.put("age",13); db.insert(TABLENAME,null,values); values.clear(); values.put("name","王五"); values.put("age",15); db.insert(TABLENAME,null,values); values.clear(); values.put("name","赵六"); values.put("age",19); db.insert(TABLENAME,null,values); values.clear(); //db.update(TABLENAME,values,"_id>?",new String[]{"2"});//将全部id大于2 的人年龄成20 // db.delete(TABLENAME,"name like ?",new String[]{"%六"}); Cursor c = db.query(TABLENAME,null,"_id>?",new String[]{"0"},null,null,"name"); if(c != null){ String[] columns =c.getColumnNames(); while(c.moveToNext()){ for(String columnName:columns){ Log.i("tag", c.getString(c.getColumnIndex(columnName))); } } c.close(); } db.close(); }}
- Android学习-SQLite介绍
- android SQLite使用介绍
- Android Sqlite介绍
- Android SQLite 介绍
- android的SQLite介绍
- Android SQLite的介绍
- Android SQLite的介绍
- android数据库SQLite介绍
- Android中存储体系介绍,SQLite学习笔记
- android学习笔记——SQLite简单应用及介绍
- 学习Android SQLite 的介绍和使用(二)
- android之SQLite数据库介绍
- android sqlite 小型demo介绍
- android sqlite一些使用介绍
- Android SQLite 数据库详细介绍
- Android的SQLite使用介绍
- Android SQLite 数据库详细介绍
- Android的SQLite使用介绍
- eclipse安装插件jquery提示插件:jQueryWTP
- 漫步ASP.NET MVC的处理管线
- VMware虚拟机磁盘操作占用过高问题(转:http://blog.csdn.net/New_When/article/details/73731149)
- Spring AOP详解
- Qt 使用qDebug() 打印Qlist 容器数据
- Android学习-SQLite介绍
- 差分约束模板
- 用maven获得jar包
- 工作上用到的linux命令汇集
- java利用jfinal框架将查询出来的list导出到Excel
- 进程的创建-fork(python版)
- 机房防雷接地的黄铜排(黄铜带)与紫铜排(紫铜带)的区别与应用
- vFORUM十大“最”看点,带你“撩”会议
- yolo