Android中SQLite使用总结
来源:互联网 发布:南京招聘网络写手 编辑:程序博客网 时间:2024/05/17 08:24
简介
SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持 Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如Tcl、PHP、Java、C++、.Net等,还有ODBC接口,同样比起 Mysql、PostgreSQL这两款开源世界著名的数据库管理系统来讲,它的处理速度比他们都快。
特点
轻量级、不需要“安装”、单一文件、跨平台、可以移植性、弱类型字段、开源
数据类型
一般数据采用的固定的静态数据类型,而SQLite采用的是动态数据类型,会根据存入值自动判断。SQLite具有以下五种常用的数据类型:
NULL: 这个值为空值
VARCHAR(n):长度不固定且其最大长度为 n 的字串,n不能超过 4000。
CHAR(n):长度固定为n的字串,n不能超过 254。
INTEGER: 值被标识为整数,依据值的大小可以依次被存储为1,2,3,4,5,6,7,8.
REAL: 所有值都是浮动的数值,被存储为8字节的IEEE浮动标记序号.
TEXT: 值为文本字符串,使用数据库编码存储(TUTF-8, UTF-16BE or UTF-16-LE).
BLOB: 值是BLOB数据块,以输入的数据格式进行存储。如何输入就如何存储,不改 变格式。
DATA :包含了 年份、月份、日期。
TIME: 包含了 小时、分钟、秒
常见方法
1、创建表
private void createTable(SQLiteDatabase db){ //创建表SQL语句 String stu_table="create table usertable(_id integer primary key autoincrement,sname text,snumber text)"; //执行SQL语句 db.execSQL(stu_table); }
2、插入数据
①SQLiteDatabase的insert(String table,String nullColumnHack,ContentValues values)方法,
参数1 表名称,
参数2 空列的默认值
参数3 ContentValues类型的一个封装了列名称和列值的Map;
②编写插入数据的SQL语句,直接调用SQLiteDatabase的execSQL()方法来执行
private void insert(SQLiteDatabase db){ //实例化常量值 ContentValues cValue = new ContentValues(); //添加用户名 cValue.put("sname","xiaoming"); //添加密码 cValue.put("snumber","01005"); //调用insert()方法插入数据 db.insert("stu_table",null,cValue); } private void insert(SQLiteDatabase db){ //插入数据SQL语句 String stu_sql="insert into stu_table(sname,snumber) values('xiaoming','01005')"; //执行SQL语句 db.execSQL(sql); }
3、删除数据
删除数据也有两种方法:
①调用SQLiteDatabase的delete(String table,String whereClause,String[] whereArgs)方法
参数1 表名称
参数2 删除条件
参数3 删除条件值数组
②编写删除SQL语句,调用SQLiteDatabase的execSQL()方法来执行删除。
private void delete(SQLiteDatabase db) { //删除条件 String whereClause = "id=?"; //删除条件参数 String[] whereArgs = {String.valueOf(2)}; //执行删除 db.delete("stu_table",whereClause,whereArgs); } private void delete(SQLiteDatabase db) { //删除SQL语句 String sql = "delete from stu_table where _id = 6"; //执行SQL语句 db.execSQL(sql); }
4、修改数据
修改数据有两种方法:
①调用SQLiteDatabase的update(String table,ContentValues values,String whereClause, String[] whereArgs)方法
参数1 表名称
参数2 跟行列ContentValues类型的键值对Key-Value
参数3 更新条件(where字句)
参数4 更新条件数组
②编写更新的SQL语句,调用SQLiteDatabase的execSQL执行更新。
private void update(SQLiteDatabase db) { //实例化内容值 ContentValues values = new ContentValues(); //在values中添加内容 values.put("snumber","101003"); //修改条件 String whereClause = "id=?"; //修改添加参数 String[] whereArgs={String.valuesOf(1)}; //修改 db.update("usertable",values,whereClause,whereArgs); } private void update(SQLiteDatabase db){ //修改SQL语句 String sql = "update stu_table set snumber = 654321 where id = 1"; //执行SQL db.execSQL(sql); }
5、查询数据
private void query(SQLiteDatabase db) { //查询获得游标 Cursor cursor = db.query ("usertable",null,null,null,null,null,null); //判断游标是否为空 if(cursor.moveToFirst() { //遍历游标 for(int i=0;i<cursor.getCount();i++){ cursor.move(i); //获得ID int id = cursor.getInt(0); //获得用户名 String username=cursor.getString(1); //获得密码 String password=cursor.getString(2); //输出用户信息 System.out.println(id+":"+sname+":"+snumber); } } }
6、删除指定表
private void drop(SQLiteDatabase db){ //删除表的SQL语句 String sql ="DROP TABLE stu_table"; //执行SQL db.execSQL(sql); }
重要类
1、DBHelper类
package lta.commonproject.data.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import android.database.sqlite.SQLiteOpenHelper;import android.util.Log;/** * @author: lutaian * @ClassName: * @Description: * @date: 2016/7/26 */public class DBHelper extends SQLiteOpenHelper { public static final String DB_NAME = "lta"; public static final int VERSION = 1; public DBHelper(Context context) { super(context, DB_NAME, null, VERSION); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { Log.e("lta","db is creating"); String sql = "create table info(id integer primary key autoincrement,name text,student_num text)"; sqLiteDatabase.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i1) { }}
2、DBManager 类
package lta.commonproject.data.db;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import java.util.concurrent.atomic.AtomicInteger;/** * @author: lutaian * @ClassName: * @Description: * @date: 2016/7/26 */public class DBManager { public static DBManager instance; public static DBHelper mDBHelper; private SQLiteDatabase mDB; private AtomicInteger mOpenCounter = new AtomicInteger(); public static synchronized void initialize(Context context,DBHelper dbHelper) { if(instance == null) { instance = new DBManager(); mDBHelper = dbHelper; } } public static synchronized DBManager getInstance() { if(instance == null) { throw new IllegalStateException(DBManager.class.getSimpleName() + " is not initialized, call initialize(..) method first."); } return instance; } public synchronized SQLiteDatabase getWritableDB() { if(mOpenCounter.incrementAndGet() == 1) { // Opening new database mDB = mDBHelper.getWritableDatabase(); } return mDB; } public synchronized SQLiteDatabase getReadableDB() { if(mOpenCounter.incrementAndGet() == 1) { // Opening new database mDB = mDBHelper.getReadableDatabase(); } return mDB; } public synchronized void closeDatabase() { if(mOpenCounter.decrementAndGet() == 0) { // Closing database mDB.close(); } }}
调用
DBHelper dbHelper = new DBHelper(mContext); DBManager.initialize(mContext,dbHelper); DBManager dbManager = DBManager.getInstance(); SQLiteDatabase database = dbManager.getWritableDB(); String sql = "insert into info(name,student_num) values('卢泰桉','890425')"; database.execSQL(sql);
- 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的使用
- android中SQLite的使用
- android中SQLite的使用
- Android中SQLite的使用
- android 中数据库SQLite使用
- Android中SQLite的使用
- 40亿个非负整数中找到没出现的数
- MySQL比like语句更高效的写法locate position instr find_in_set
- C#写二进制文件,只写入byte[]数组的前两个数字
- C++二叉树之构造拷贝赋值,递归和非递归的前序遍历,中序遍历和后序遍历,以及层序遍历
- 分布式事务解决方案(二)
- Android中SQLite使用总结
- CSDN_MarkDown官方教程
- HDU1599 find the mincost route (floyd求最小环)
- Android 开发常用icon下载
- No result defined for action and result input
- 关于android启动页的一些优化建议
- ContentProvider数据库共享之——实例讲解
- 转 -- 微信读书iOS性能优化
- Linux 系统简介