SQLite存储
是什么?
软件:开源,体积小,适合便携式设备(例如手机)
数据库管理系统(DBMS)
Why use :安全,检索、更新方便
应用场合:
1、更好的存储数据
2、更好的管理数据
3、提高数据的安全
FAQ:
1、将数据直接存储到一些文件的缺陷:
1)安全性相对较差
2)跟新和查询效率较低
3)易读性相对较差
2、SQLite 存储数据的形式是怎样的?
1)SQLite 是一个DBMS,此系统可以管理多个数据库(DB)
2)SQLite 中的一个DB可以存储多张二维表(行和列)
3)SQLite 中表(table)是时间的最基本存储单元,DB中所有的数据都是要存储在表中的,表中的行通常称之为记录,表中的列通常称之为字段或数据项
Android和IOS目前的系统中都内置了SQLite数据库
Android平台框架:
Application AP(应用层)
Applicatuin FrameWork (AF)
Libraries(SQLite ,......)+虚拟机
Linux内核系统
3、SQLite在Android中的应用
3.1)FAQ
1)Android中有几个SQLite:1个
2)Android系统中有内置的数据库(DB)吗?(有,很多个)
A)手机的联系人
B)媒体库
C)便签(备忘录)
3)Android如何操作SQLite数据库?
A)Java:API
B)Doc:adb , sqlite3
C)Sql(结构化存储语言)
3.2)API
1)Context
2)SQLiteDatabase(发送SQL,将sql语句发送到SQLite端)
3)SimpleCursorAdapter(将cursor中数据构建成item)
4)Cursor
5)SQLiteOpenHelper(工具类,抽象类:封装SQLite数据库的操作)
3.3)SQL(基本应用)
1)DDL(数据定义语言):create,alter,drop,...
2)DML(数据操纵语言):insert,update,delete,select,...
3)DCL(数据控制语言):commit, rollback
3.4)SQLite应用的基本步骤
1)获得SQLiteDatabase对象
2)借助SQLiteDatabase对象发送SQL
3)释放资源()
4、SQLite在Android中的应用扩展((自定义的一个sqlite)在activity中这就这个类的增、删、改、查方法就可以:)
部分代码
public class NoteProvider {
private DBHelper dbHelper;
public NoteProvider(Context context){
dbHelper=new DBHelper(context,"note.db" , null, 1);
}
/**查询数据*/
public Cursor query(String table, String selection,
String[] selectionArgs,String orderBy){
SQLiteDatabase sdb=dbHelper.getReadableDatabase();
return sdb.query(table, null, selection, selectionArgs, null, null, orderBy);
}
/**写入数据*/
public long insert(String table ,ContentValues values){
//创建或打开数据库
SQLiteDatabase sdb=dbHelper.getWritableDatabase();
//写入数据
long id = sdb.insert(table, null, values);
//释放资源
sdb.close();
return id ;
}
/**更新数据*/
public void update(String table, ContentValues values, String whereClause, String[] whereArgs){
//创建或打开数据库
SQLiteDatabase sdb=dbHelper.getWritableDatabase();
sdb.update(table, values, whereClause, whereArgs);
sdb.close();
}
/**删除数据*/
public void delete(String table, String whereClause, String[] whereArgs){
SQLiteDatabase sdb=dbHelper.getWritableDatabase();
sdb.delete(table, whereClause, whereArgs);
sdb.close();
}
/**工具类*/
class DBHelper extends SQLiteOpenHelper{
public DBHelper(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
// TODO Auto-generated constructor stub
}
/**此方法在数据库创建时执行*/
@Override
public void onCreate(SQLiteDatabase db) {
Log.i("TAG", "DBHelper.onCreate");
String sql="create table notetable("
+ "_id integer primary key autoincrement,"
+ "context text not null,"
+ "created text not null)";
db.execSQL(sql);
Log.i("TAG", "create ok");
}
/**此方法在数据版本升级时执行,在此方法中做什么由业务而定*/
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//db.execSQL("");
}
}
}
SQLite 数据库在doc界面的访问
1、Java代码的访问
2、命令行访问(SQLite3):
1)进入Linux内核系统(adb shell)
2)进入内部存储目录cd data/data
3)查看内部存储目录结构(ls)
4)进入要访问的sqlite数据库的项目目录(cd com.tarena.yy.sqlite02)
5)显示当前目录的目录结构(ls)
6)进入数据库目录(cd database)
7)打开数据库(sqlite3 contact.db)
8)查看数据库表(.table)
9)执行查询(例如:select * from contact;注意:没加“;”时,直接加; 就行了,不用再写select语句了)
10)退出sqlite(. exit)
11)退出Linux(exit)
12)查看帮助(. help)