Android sqlite数据库操作笔记
来源:互联网 发布:手机角度水平仪软件 编辑:程序博客网 时间:2024/05/16 12:55
这篇博客记录了一个app中,建立日志数据库需要的操作。应用场景如下:
app有个登录系统,每一次登录,都需要记录一条日志信息,信息中记录登录的用户名,时间等信息。数据总共只能保存最近50次登陆的记录,超过50次以后,就会删除最前面的记录。保证数据库的行数维持在50行不变。
对数据库的操作使用的是sql语句的方式。
由于本人对sql语句不太熟练,所以将其记录下来,供以后再次使用sql数据库的时候参考使用,如果您对sqlite的操作也不太熟练,那么您可以参考本篇文章,类似的操作只是改改参数就可以了。如果您是大神,那么不要耽搁您的时间,请绕道,不喜勿碰!
首先需要定义了数据库的位置,数据库的名字。这个数据库使用的是单例模式。
private SQLiteDatabase db =null; private static final String PACKAGE_NAME = "com.example.sqlite"; private static final String DATABASE_NAME = "log.db"; private static final String DATA_DATA = "/data/data/"; private static AppLogAccessDatabase mInstance=null; public static AppLogAccessDatabase getInstance(){ if (mInstance==null){ mInstance = new AppLogAccessDatabase(); } return mInstance; }
接下来全是对数据库的操作。
创建数据库
public AppLogAccessDatabase(){ String str = DATA_DATA+PACKAGE_NAME+"/"+DATABASE_NAME; Log.i(TAG,"db_create with name: "+str); db = SQLiteDatabase.openOrCreateDatabase(str, null); }
创建表
public Boolean createUserLogInfoTable() { try{ db.execSQL("create table if not exists UserLogInfo (_id INTEGER PRIMARY KEY AUTOINCREMENT,userName VARCHAR,userAction VARCHAR,accessTime VARCHAR)"); } catch(SQLException e) { return false; } return true; }
插入数据
public Boolean insertOneLogInfo(UserLogInfo info) { try{ db.execSQL("insert into UserLogInfo values(NULL,?,?,?)",new Object[]{info.userName,info.userAction,info.accessTime}); } catch(SQLException e) { return false; } return true; }
删除第一条数据
public Boolean deleteTopLogInfo() { try { db.execSQL("delete from UserLogInfo where _id in(select _id from UserLogInfo order by _id limit 0,1)"); } catch(SQLException e) { Log.d("log_db","deleteTopLogInfo fail"); return false; } Log.d("log_db","deleteTopLogInfo sucess"); return true; }
获取所有用户
public List<UserLogInfo> queryLogInfoList() { List<UserLogInfo> lstData; lstData = new ArrayList<UserLogInfo>(); Cursor c = null; c = db.rawQuery("SELECT * FROM UserLogInfo", null); while(c.moveToNext()) { UserLogInfo tmpData= new UserLogInfo(); tmpData.userName = c.getString(c.getColumnIndex("userName")); tmpData.userAction = c.getString(c.getColumnIndex("userAction")); tmpData.accessTime = c.getString(c.getColumnIndex("accessTime")); lstData.add(tmpData); Log.d("log_db",tmpData.toString()+"id: "+c.getInt(c.getColumnIndex("_id"))); } c.close(); return lstData; }
获取当前数据库的行数
public int getLogInfoCount(){ Cursor c = null; c = db.rawQuery("SELECT * FROM UserLogInfo", null); int count = c.getCount(); Log.d("log","count: "+count); c.close(); return count; }
代码中使用到的UserLogInfo类定义如下:
public class UserLogInfo { public String userName; public String userAction; public String accessTime; @Override public String toString() { return "userName: "+userName+" userAction: "+userAction+" accessTime: "+accessTime; }}
0 0
- Android sqlite数据库操作笔记
- android笔记之SQLite 数据库操作
- SQLite数据库操作笔记
- android sqlite数据库操作
- Android数据库操作--------SQLite
- android数据库SQLite操作
- android 数据库 sqlite 操作
- android SQLite数据库操作
- Android SQLite数据库操作
- Android SQLite数据库操作
- Android sqlite 数据库操作
- Android操作Sqlite数据库
- Android sqlite 数据库操作
- android操作sqlite数据库
- android sqlite 数据库操作
- Android-操作SQLite数据库
- android操作SQLite数据库
- android sqlite 操作数据库
- Shiro 分布式架构下 Session 的共享实现
- SpringMVC动态配置双数据源
- java设计模式之原型模式
- 在vs2015连接oracle的方法
- Sublime text 3基本问题随机笔记
- Android sqlite数据库操作笔记
- js深度克隆
- linux常见错误码
- Milking Time POJ
- 《C++ Primer》第10章:泛型算法 学习笔记总结
- bzoj4337 BJOI2015 树的同构
- 逆向工程核心原理学习笔记(十三):分析abex' crackme #1 的延伸:将参数压入栈
- PB FTP InternetConnect返回0的问题
- 安装VirtualBox虚拟网卡并任意修改其物理地址(MAC)