您的位置:首页 > 移动开发 > Android开发

android本地数据存贮之sqlite

2015-06-07 13:28 417 查看

sqlite 轻型的数据库

android 开发使用sqlite时,数据库存贮在 /data/data/项目主包名/databases/ 下面 , 找到自己建立的数据库,继续查看可以看到自己及建立的所有表

sqlite 的使用需要注意 事务,游标的打开关闭; 一定要仔细检查方法,并且要多测试几遍,看手机上的表中是否有此数据,是否真的执行了增删改查方法

sqlite的使用比较广泛,这方面资料比较的多,在学习这块时,基本上写好对一个表的操作就行了,自己可以整理下 ,到时候android开发拿过来直接用就行了。

我这边的例子是先构造一个SQLiteOpenHelper类(主要是建立数据库表),然后写个DBmanager类实现对数据库中的表进行具体的操作

一,正确书写各种sql语句 和 事务操作

二,注意测试,具体的命名等,方面调用和项目交流



public class DBHelper extends SQLiteOpenHelper{

//数据库 名字 自己取

private static final String DATABASE_NAME = “xx.db”;

private static final int DATABASE_VERSION = 1;

//构造方法

public DBHelper(Context context, String name, CursorFactory factory,

int version) {

super(context, name, factory, version);

}

public DBHelper(Context context) {

this(context, DATABASE_NAME, null, DATABASE_VERSION);

}

@Override

public void onCreate(SQLiteDatabase db) {

//创建userlist表

String userlistTable = “create table if not exists Userlist” +

“(id INTEGER PRIMARY KEY AUTOINCREMENT ,” +

“userTel VARCHAR(255) )” ;

db.execSQL(userlistTable);

}

// 如果DATABASE_VERSION值被改为2,系统发现现有数据库版本不同,即会调用onUpgrade

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

// TODO Auto-generated method stub

db.execSQL(“ALTER TABLE Userlist ADD COLUMN other STRING”);

}





public class DBManager {

private DBHelper helper;
private  SQLiteDatabase db;

/**
* 构造函数
* @param context
*/
public DBManager(Context context) {
helper = new DBHelper(context); // 因为getWritableDatabase内部调用了mContext.openOrCreateDatabase(mName, 0,mFactory);
// 所以要确保context已初始化,我们可以把实例化DBManager的步骤放在Activity的onCreate里
db = helper.getWritableDatabase();
db = helper.getReadableDatabase();
}

/**
* 清空数据库中的内容
* @return
*/
public boolean userlist_deleteAll(){
boolean b = false;
db.beginTransaction();
try {
db.execSQL("delete from Userlist");
b =  true;
} catch (SQLException e) {
b =false ;
}finally{
db.endTransaction();
}
return b;
}

/**
* 插入数据
* @param userlist
* @return
*/
public boolean userlist_insertUserlist(ModelUserlist userlist) {
boolean b = false;
db.beginTransaction();
try {
Cursor c = db.rawQuery(
"select *from Userlist where userTel=?" , new String[] { userlist.getUserTel() });
if (c == null || c.getCount() <= 0) {
db.execSQL("insert into Userlist (userTel) values(?)", new Object[] {
userlist.getUserTel(),
});
b = true;
}
c.close();
db.setTransactionSuccessful();
}catch (SQLException e) {
b = false ;
}finally{
db.endTransaction();
}
return b;
}

/**
* 删除一个Userlist对象
* @param s
* @return
*/
public boolean userlist_deleteByTel(String userTel) {
boolean b = false;
db.beginTransaction();
try {
db.execSQL("delete from Userlist where userTel=?",
new String[] { userTel });
b =  true;
}catch (SQLException e) {
b =false ;
}finally{
db.endTransaction();
}
return b;
}

/**
* 直接查表得到所有对象
* @return
*/
public List<ModelUserlist> userlist_getAll() {
List<ModelUserlist> models = new ArrayList<ModelUserlist>();
ModelUserlist u = null ;
Cursor c = db.rawQuery("select * from Userlist" , null) ;
while (c.moveToNext()) {
u = new ModelUserlist();
u.id = c.getInt(c.getColumnIndex("id"));
u.userTel = c.getString(c.getColumnIndex("userTel"));
models.add(u);
}
c.close() ;
return models ;
}


}

具体操作

DBManager userModelManager = new DBManager(getApplicationContext());
然后就可以调用各种方法了 , 我这里方法事务管理可能不太好,希望读者改进。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: