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()); 然后就可以调用各种方法了 , 我这里方法事务管理可能不太好,希望读者改进。
相关文章推荐
- android的sd卡上创建目录不显示
- android 本地数据存贮之sharedpreference
- Android编程导出APK
- android 百度地图 在打包签名后key验证失败的解决方案
- Android中的单位
- android 自定义view2
- 【转】Android C程序也可自己手动用交叉编译器编译 (
- android 调用系统界面
- 友善之臂tiny4412-如何搭建android开发环境(64位操作系统)
- Android25闹钟项目——音乐播放
- Android中的五大布局
- Android R.java文件丢失
- Ubuntu14.04,64位操作系统安装部分android32位lib不兼容问题
- 安卓Android控件ListView嵌套EditText控件
- Service和BroadcastReceiver总结
- Android后台发送短信
- Android 学习笔记 BroadcastReceiver广播...
- 绑定服务时什么时候调用onRebind
- Android基础之/mnt/sdcard与/sdcard区别
- 我的Android开发相关文章