1. 获取数据库帮助类:
定义一个类继承抽象类SQLiteOpenHelper:定义带参数的构造方法,和重写抽象方法
public class PersonDataBaseHelper extends SQLiteOpenHelper {
/**
* 数据库的构造方法,用来定义数据库的名称,数据库查询的结果集,数据库的版本(不能小于1)
*/
public PersonDataBaseHelper(Context context) {
//创建一个person数据库
super(context, "person.db", null, 1);
}
/**
* 当数据库第一次被创建的时候,调用onCreate方法
* @param db 被创建的数据库
*/
@Override
public void onCreate(SQLiteDatabase db) {
//初始化数据库的表结构,创建一个表person,主键id自增长,name,number字段;
db.execSQL("create table person id integer primary key autoincrement,name varchar(20),number varchar(20)");
}
@Override
public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {
//版本更新时调用的方法
}
}
2.获取数据库
创建数据库帮助类对象,获取可读或可写的数据库
PersonDataBaseHelper helper=new PersonDataBaseHelper (this);//this:context
//获取可写的数据库
SQLiteDatabase database = helper.getWritableDatabase();
//获取可读的数据库
SQLiteDatabase database = helper.getReadableDatabase();
3.获取结果集
Cursor cursor = db.rawQuery("select * from " + PERSONAL_TABLE_NAME, null);
//null表示,从查询结果的第一列的上一列开始
4.操作结果集
#1 boolean cursor.moveToNext()
//能否移动到查询结果的下一步,可以的话返回true,没有下一行返回false
#2 查询某个字段在结果集中的索引值
int cursor.getColumnIndex(PERSONAL_ID);
#3 获取某个字段对应结果,其类型为String;
String cursor.getString(cursor.getColumnIndex(PERSONAL_ID));
一、安卓中数据库的简单使用:
//获取自定义的数据数据库帮助类
DbOpenHelper dbHelper = DbOpenHelper.getInstance(context);
//获取数据库
SQLiteDatabase db = dbHelper.getReadableDatabase();
//定义存储信息的集合
ArrayList<PersonalInformation> list=new ArrayList<PersonalInformation>();
if (db.isOpen()) {
//获取结果集
Cursor cursor = db.rawQuery("select * from " + PERSONAL_TABLE_NAME, null);
//变量结果集,存储到集合中去
while (cursor.moveToNext()) {
String id = cursor.getString(cursor.getColumnIndex(PERSONAL_ID));
String name = cursor.getString(cursor.getColumnIndex(PERSONAL_NAME));
String phone = cursor.getString(cursor.getColumnIndex(PERSONAL_PHONE));
String password = cursor.getString(cursor.getColumnIndex(PERSONAL_PASSWORD));
String credit = cursor.getString(cursor.getColumnIndex(PERSONAL_CREDIT));
String email = cursor.getString(cursor.getColumnIndex(PERSONAL_EMAIL));
PersonalInformation pi = new PersonalInformation();
if(id!=null)pi.setPersonalId(id);
if(name!=null)pi.setPersonalName(name);
if(phone!=null)pi.setPersonalPhone(phone);
if(password!=null)pi.setPersonalPassword(password);
if(credit!=null)pi.setPersonalCredit(credit);
if(email!=null)pi.setPersonalEmail(email);
list.add(pi);
}
cursor.close();
}
二、数据库的事物:为了保证某一段sql语句的同时执行,引入了事物的概念
格式:
db.beginTransaction();
try{
....
//标记数据库事物执行成功
db.setTransactionSuccessful();
}catch(Exception e){
}finally{
db.endTransation();
db.close();
}
Demo:
PersonSQLiteOpenHelper helper=new PersonSQLiteOpenHelper(getContext());
SQLiteDatabase db=helper.getWritableDatabase();
//开启数据库的事物
db.beginTransaction();
try{
db.execSQL("update person set account=account-1000 where name=?",
new Object[]{"zhangsan"});
db.execSQL("updata person set account=account+1000 where name=?",
new Object[]("wangwu") );
db.setTransactionSuccessful();
}catch(Exception e){
}
finally{
db.endTransaction();
db.close();
}
三、在cmd中查询及操作数据库:
#1 adb shell
#2 cd data/data/包名/databases/ 进入到数据库所在的目录下
#3 sqlite3 person.db(表名)
#4 执行sql语句;select * from person;