http://www.2cto.com/kf/201411/352269.html
-
在编程中经常会遇到数据库的操作,而Android系统内置了SQLite,它是一款轻型数据库,遵守事务ACID的关系型数据库管理系统,它占用的资源非常低,能够支持Windows/Linux/Unix等主流操作系统,同时能够跟很多程序语言如C#、PHP、Java等相结合.下面先回顾SQL的基本语句,再讲述Android的基本操作.
一. adb shell回顾SQL语句
首先,我感觉自己整个大学印象最深的几门课就包括《数据库》,所以想先回顾SQL增删改查的基本语句.而在Android SDK中adb是自带的调试工具,它存放在sdk的platform-tools目录下,通过adb shell可以进入设备控制台,操作SQL语句.
G:
如下所示我先创建了SQLiteAction工程,同时在工程中创建了StuDatabase.db数据库.输入adb shell进入设备控制台,调用"sqlite3+数据库名"打开数据库,如果没有db文件则创建.
cd G:\software\Program software\Android\adt-bundle-windows-x86_64-20140321\sdk\platform-tools
adb shell
cd /data/data/com.example.sqliteaction/databases/
sqlite3 StuDatabase.db
.table
.schema
然后如下图所示,可以输入SQL语句执行增删改查.注意很容易写错SQL语句,如忘记")"或结束";"导致cmd中调用出错.
--创建Teacher表
create table Teacher (id integer primary key, name text);
--向表中插入数据
insert into Teacher (id,name) values('10001', 'Mr Wang');
insert into Teacher (id,name) values('10002', 'Mr Yang');
--查询数据
select * from Teacher;
--更新数据
update Teacher set name='Yang XZ' where id=10002;
--删除数据
delete from Teacher where id=10001;
二. SQLite数据库操作
下面讲解使用SQLite操作数据库:
1.创建打开数据库
使用openOrCreateDatabase函数实现,它会自动检测是否存在该数据库,如果存在则打开,否则创建一个数据库,并返回一个SQLiteDatabase对象.
2.创建表
通过定义建表的SQL语句,再调用execSQL方法执行该SQL语句实现建立表.//创建学生表(学号,姓名,电话,身高) 主键学号
3.插入数据
public static final String createTableStu = "create table Student (" +
"id integer primary key, " +
"name text, " +
"tel text, " +
"height real)";
//SQLiteDatabase定义db变量
db.execSQL(createTableStu);
使用insert方法添加数据,其实ContentValues就是一个Map,Key字段名称,Value值.
SQLiteDatabase.insert(
String table, //添加数据的表名
String nullColumnHack,//为某些空的列自动复制NULL
ContentValues values //ContentValues的put()方法添加数据
);
//方法一
4.删除数据
SQLiteDatabase db = sqlHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("id", "10001");
values.put("name", "Eastmount");
values.put("tel", "15201610000");
values.put("height", "172.5");
db.insert("Student", null, values);
//方法二
public static final String insertData = "insert into Student (" +
"id, name, tel, height) values('10002','XiaoMing','110','175')";
db.execSQL(insertData);
使用delete方法删除表中数据,其中sqlHelper是继承SQLiteDatabase自定义类的实例.
SQLiteDatabase.delete(
String table, //表名
String whereClause, //约束删除行,不指定默认删除所有行
String[] whereArgs //对应数据
);//方法一 删除身高>175cm
5.更新数据
SQLiteDatabase db = sqlHelper.getWritableDatabase();
db.delete("Student", "height > ?", new String[] {"175"});
//方法二
String deleteData = "DELETE FROM Student WHERE height>175";
db.execSQL(deleteData);
使用update方法可以修改数据,SQL+execSQL方法就不在叙述.
//小明的身高修改为180
6.其他操作
SQLiteDatabase db = sqlHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("height", "180");
db.update("Student", values, "name = ?", new String[] {"XiaoMing"});
下面是关于数据库的其他操作,其中包括使用SQL语句执行,而查询数据Query方法由于涉及ListView显示,请见具体实例.
//关闭数据库
SQLiteDatabase.close();
//删除表 执行SQL语句
SQLiteDatabase.execSQL("DROP TABLE Student");
//删除数据库
this.deleteDatabase("StuDatabase.db");
//查询数据
SQLiteDatabase.query();三. 数据库操作简单实例
显示效果如下图所示: