首页 > 代码库 > 初识SQLite
初识SQLite
基本概念:
SQLite 是一个开源的嵌入式关系数据库,实现自包容、零配置、支持事务的SQL数据库引擎。 其特点是高度便携、使用方便、结构紧凑、高效、可靠。
SQLiteOpenHleper(重要的数据库帮助类):
SQLiteOpenHleper是继承于SQLiteDataBase的一个帮助类,用来管理数据库的创建和版本更新,它主要实现的两个方法是:oncreate(SQLiteDataBase db),onUpgrade(SQLiteDataBase db,INT oldVersion,int newVersion),他们分别是创建数据库和更新数据库.
1 package com.example.sqliteData.OpenHelper; 2 3 import android.content.Context; 4 import android.database.sqlite.SQLiteDatabase; 5 import android.database.sqlite.SQLiteOpenHelper; 6 7 /** 8 * 数据库帮助类 9 */10 public class PersonOpenHelper extends SQLiteOpenHelper {11 /**12 * @param context13 */14 public PersonOpenHelper(Context context) {15 super(context, "person.db", null, 1);16 }17 18 /**19 * 数据库库第一次被创建的时候调用onCreate()20 *21 * @param db 被创建的数据库22 */23 @Override24 public void onCreate(SQLiteDatabase db) {25 db.execSQL("create table person(id integer primary key autoincreament,name varchar(20),number varchar(20))");26 }27 28 @Override29 public void onUpgrade(SQLiteDatabase sqLiteDatabase, int i, int i2) {30 //初学时一般用不到31 }32 }
SQLite的增删查改:SQLlite提供了操作数据库的API,我们可以通过实例化SQLiteDataBase来进行操作.(insert,query,update)
增加数据 insert(String table, String nullColumnHack, ContentValues values)
参数解释:
table 表名称
nullColumnHack 空列的默认值 一般写为null
ContentValues 填入列名称和列值的Map。 代码演示:
public void add(String name, String pwd) { SQLiteDatabase db = helper.getWritableDatabase(); ContentValues cv=new ContentValues(); cv.put("username",name); cv.put("password",pwd); db.insert("User",null,cv); //nullColumnHack空列的默认值 db.close(); }
删除数据 delete(String table, String whereClause, String[] whereArgs)
table 表名
whereClause 删除条件
whereArgs 删除条件值数据组 代码演示
public void delete(String name) { SQLiteDatabase db = helper.getWritableDatabase(); String whereClause="id=?";//?表示占位符 String[] whereArgs={String.valueOf(1)}; db.delete("User",whereClause,whereArgs); db.close(); }
查询数据 query(String table, String[] columns, String selection, String[] selectionArgs, String groupBy, String having, String orderBy, String limit)
table 表名称
columns 列名称
selection 条件子句,相当于where
selectionArgs 条件字句的参数数组
groupBy 分组列
having 分组条件
orderby 排序类
limit 分页查询限制
补:Cursor 返回值 相当于结果集ResultSet 代码展示
public List<Person> findAll() { SQLiteDatabase db = helper.getWritableDatabase(); List<Person> persons = new ArrayList<Person>(); Cursor cursor = db.query("User", null, null, null, null, null, null, null); while (cursor.moveToNext()) { int id = cursor.getInt(cursor.getColumnIndex("id")); String name = cursor.getString(cursor.getColumnIndex("name")); String number = cursor.getString(cursor.getColumnIndex("number")); Person p = new Person(id, name, number); persons.add(p); } cursor.close(); db.close(); return persons; }
修改数据 upgrade(String table, ContentValues values, String whereClause, String[] whereArgs)
table 表名称
ContentValues 键值对Map
selection 条件子句,相当于where
selectionArgs 条件字句的参数数组
SQLiteDatabase db = helper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("password", "123456"); String whereClause = "id=?"; String[] whereArgs = {String.valueOf(1)}; db.update("User", values, whereClause, whereArgs); db.close();