- OPEN_READONLY :表明的是以只读方式打开数据库(常量值为:1)
- OPEN_READWRITE:表明以读写方式打开数据库(常量值为:0)
- CREATE_IF_NECESSARY:当数据库不存在时建立数据库
- NO_LOCALIZED_COLLATORS:打开数据库时,不根据本地化语言对数据库进行排序(常量值为:16)
代码:mysql
//当数据库存在时:
String path = SDCardHelper.getSDCardRoot() + File.separator + "steven" + File.separator + "android_manual.db";
SQLiteDatabase db = SQLiteDatabase.openDatabase(path, null,SQLiteDatabase.OPEN_READWRITE);
Cursor cursor = db.rawQuery("select * from android_basic order by id desc limit 0 , 15",null);
//当数据库不存在时:
String path = SDCardHelper.getSDCardRoot() + File.separator + "steven" + File.separator + "words.db";
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(path, null);
db.execSQL("create table tb_words (_id integer primary key autoincrement ,english , chinese)");
建立表:
SQLiteDatabase db = SQLiteDatabase.openOrCreateDatabase(path, null);
db.execSQL("create table tb_words (_id integer primary key autoincrement ,english , chinese)");
String path = SDCardHelper.getSDCardRoot() + File.separator + "steven" + File.separator + "words.db";
主意:
一。SQLite的数据类型?
首先你会接触到一个让你惊讶的名词: Typelessness(无类型)。其实SQLite是无类型的。这意味着你能够保存任何类型的数据到数据库表的任何列中, 不管这列声明的数据类型是什么。对于SQLite来讲对字段不指定类型是彻底有效的。如:create table dict(_id integer primary key autoincrement , word , detail);
注意:这里必定要注意,SQLite数据库在一种状况下是要求类型匹配的,当咱们建表是如create table table1(id integer primary key),sqlite对应一位integer primary key的列值容许你存储64位的整数。必须是INTEGER PRIMARY KEY AUTOINCREMENT。
诚然SQLite容许忽略数据类型, 可是仍然建议在你的Create Table语句中指定数据类型. 由于数据类型对于你和其余的程序员交流, 或者你准备换掉你的数据库引擎时能起到一个提示或帮助的做用。
2、调用SQLiteDatabase 对象的方法执行数据库操做:【重要】
- execSQL(String sql , Object[] args) 执行带占位符的sql语句(update,insert,delete语句)
- rawQuery( String sql , String[] args ) 执行带占位符的sql查询(select语句)
- beginTransaction() 开始事务
- endTransaction() 结束事务
【备注:】除了以上重要的四个方法外,Android考虑到不熟悉sql语句的开发者,提供了进一步封装后的一系列方法。可是如下这几个方法参数众多,平时不建议使用,可是必定也要掌握,在ContentProvider中会有相似的方法,要注意区分。
- insert()
- update()
- delete()
- query()
3、对查询结果进行操做。当执行的是select语句,返回一个Cursor对象。Cursor相似于JDBC中的ResultSet结果集,内置移动游标等方法:
- move(int offset) 按偏移量来移动
- moveToFirst() 将记录指针移动到第一行
- moveToLast () 将记录指针移动到最后一行
- moveToNext () 将记录指针移动到下一行
- moveToPosition(int position) 将记录指针移动到指定的一行
- moveToPrevious() 将记录指针移动到上一行
- getCount() 返回Cursor的行数
- getColumnName(int index) 根据列的索引返回其相应的列名称
- getColumnIndex(String name) 根据列的名字返回其相应的索引
- getColumnNames() 返回一个保存有全部列名称的字符串数组
- getColumnCount() 返回列的总数
- close() 关闭游标结果集,释放资源
- getType() 获取字段的数据类型。分别有0、一、二、三、4这几个结果。
-
- 0: 表明null
- 1:表明int
- 2:表明float
- 3:表明String
- 4:表明blob
(四)、事务:【重要】
数据库事务(Database Transaction) ,是指做为单个逻辑工做单元执行的一系列操做,要么完整地执行,要么彻底地不执行。事务的目的是为了保证数据的一致性。