1.基本Sql语句
创建表
createtable person(
idinteger primary key autoincrement,
namevarchar(20),
ageinteger
);
增
insert into person(name,age) values('lisi', 23);
删
delete from person where name = 'lisi';
改
update person set age =30 where name = 'zhangsan';
查
select * from person;
select age from person where name = 'zhangsan';
添加列
alter table person addcolumn balance integer;
2.管理SQLite数据库
创建一个SQLiteOpenHelper的子类
public class MarkDBOpenHelper extends SQLiteOpenHelper {
public MarkDBOpenHelper(Context context, String name,
CursorFactory factory, int version) {
super(context, name, factory, version);
}
public MarkDBOpenHelper(Context context) {
super(context, "mark.db", null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("create table mark (_id integer primary key autoincrement,cardkey varchar(20))");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
}
onCreate()方法在数据库创建时执行;在此方法中,可以添加创建表的代码
onUpdate()方法在数据库升级时执行;在此方法中,可以添加修改表结构等代码
onOpen()方法在数据库每次打开时执行;
操作数据库,可以用原生的sql语句操作;
开发中常用 第二种操作方式,即SQLiteDatabase自带的增删改查方法
例如:
public class MarkDao {
MarkDBOpenHelper helper;
public MarkDao(Context context) {
helper = new MarkDBOpenHelper(context);
}
/**
* 增加一条数据
* @param cardkey
* @return
*/
public boolean add(String cardkey) {
SQLiteDatabase db = helper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put("cardkey", cardkey);
long result = db.insert("mark", null, values);
db.close();
if (result == -1) {
return false;
}
return true;
}
/**
* 删除一条数据
* @param cardkey
* @return
*/
public boolean delete(String cardkey) {
SQLiteDatabase db = helper.getWritableDatabase();
int result = db.delete("mark", "cardkey=?", new String[] { cardkey });
db.close();
if (result == 0) {
return false;
}
return true;
}
/**
* 查询一条数据
* @param cardkey
* @return
*/
public boolean find(String cardkey) {
SQLiteDatabase db = helper.getWritableDatabase();
Cursor cursor = db.query("mark", null, "cardkey=?",
new String[] { cardkey }, null, null, null);
while (cursor.moveToNext()) {
return true;
}
cursor.close();
db.close();
return false;
}
}
使用方法:
beginTransaction(): 开启一个事务
setTransactionSuccessful():设置成功点
endTransaction(): 结束事务,包括提交和回滚
!!!事务可以提高效率
插入一万条数据到数据库,使用事务,比不使用事务,效率高6倍多。(做过实验)
5.如何查看SQLite数据库
Android提供了一个sqlite3.exe,位于sdk的tools目录下,用于操作SQLite数据库,其常用命令为:
sqlite3 数据库名称 : 进入数据库操作模式 eg: sqlite3 contacts.db
.tables : 查看所有的表 eg: .table
.schema : 查看查看库中所有表的DDL语句 eg: .schema
.help : 查看帮助 eg:.help
.headers on/off :显示表头,默认off eg:headers on
.mode list|column|insert|line|tabs|tcl|csv :改变输出格式
eg:.mode column
.nullValue : NULL空值数据显示问题 eg: .nullValue NULL
.dump表名 : 生成形成表的SQL脚本 eq: .dump person
.dump : 生成整个数据库的SQL脚本 eq: .dump
.exit : 退出sqlite操作模式 eq: .exit
操作步骤:
1. 在命令行界面使用adbshell命令进入linux内核
2. 使用cd命令进入数据库所在目录(数据库的路径为”/data/data/应用包名/databases/数据库”)
3. 使用”sqlite3数据库名”进入数据库操作模式
直接使用各种命令操作数据库