android中的数据存储方式(二)SQLite
16lz
2021-01-26
对于sqlite也是第一次接触,本来不打算出这篇博客,但是原谅我的强迫症吧,可能内容比较少。以后边学习边更新。
然后再说一下我对sqlite的理解:它就是一个超轻量级别的数据库。轻到什么程度上呢,它基本不用自己写sql语句,用已经封装好的方法就可以了,存储方法就是在手机上存储了,和“android中的数据存储方式(一)”中说到的文件存储方法的文件存储位置差不多。
① 先写个sqlite辅助类:
public class DatabaseHelper extends SQLiteOpenHelper { static int VERSION = 1; public DatabaseHelper(Context context, String name, CursorFactory factory, int version) { super(context, name, factory, version); } //创建数据库调用此构造函数 public DatabaseHelper(Context context, String name) { this(context, name, VERSION); } //更新数据库版本调用此构造函数 public DatabaseHelper(Context context, String name, int version) { this(context, name, null, version); } @Override public void onCreate(SQLiteDatabase db) { // 创建数据库sql语句 String sql = "CREATE TABLE user (id int PRIMARY KEY,name varchar(20))"; // 把id设置为主键 // 执行数据库操作 db.execSQL(sql); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { }}
②创建数据库并建表、对数据的增删查改:
//创建数据库并建表的代码DatabaseHelper dbHelper1 = new DatabaseHelper(MainActivity.this,"zwq"); // 取得一个只读的数据库对象 SQLiteDatabase db1 = dbHelper1.getReadableDatabase();
//增加数据//创建存放数据的ContentValues对象 ContentValues cv1 = new ContentValues(); //向对象中放入数据 cv1.put("id", 1); cv1.put("name", "nihao"); DatabaseHelper dbHelper3 = new DatabaseHelper(MainActivity.this,"zwq"); SQLiteDatabase db3 = dbHelper3.getWritableDatabase(); long a = db3.insert("user", null, cv1); /*a如果返回-1,则证明数据插入失败;返回正数表示插入了几条数据*/
//更新数据代码:DatabaseHelper dbHelper4 = new DatabaseHelper(MainActivity.this,"zwq"); SQLiteDatabase db4 = dbHelper4.getWritableDatabase(); ContentValues cv2 = new ContentValues(); cv2.put("name", "你好"); long b = db4.update("user", cv2, "id=?", new String[]{"1"}); /*b表示了更新了几行*/
//查询数据DatabaseHelper dbHelper5 = new DatabaseHelper(MainActivity.this,"zwq"); SQLiteDatabase db5 = dbHelper5.getReadableDatabase(); //创建游标对象 Cursor cursor = db5.query("user", new String[]{"id","name"}, "id=?", new String[]{"1"}, null, null, null,null); //利用游标遍历所有数据对象 while(cursor.moveToNext()){ String name = cursor.getString(cursor.getColumnIndex("name")); }//读取游标数据的第二种方法/*if (cursor.moveToFirst()) { for (int i = 0; i < cursor.getCount(); i++) { cursor.moveToPosition(i); String name = cursor.getString(cursor.getColumnIndex("name")); } }*//*如果不明白游标百度吧,就是个用来存放数据的一个类,变量name就是最后获得的数据*/
//删除数据DatabaseHelper dbHelper6 = new DatabaseHelper(MainActivity.this,"zwq"); SQLiteDatabase db6 = dbHelper6.getWritableDatabase(); long c = db6.delete("user", "id=?", new String[]{"1"}); /*c表示删除了几行数据*/
sqlite是不是很简单?确实是很简单。。。
我有空还想研究研究sqlite版本更新到底有什么用,我没有研究透所以代码就不放了。
如果还有强迫症的同志们,非要在手机上看到数据库的变化,就去我的另一篇博客”android中的数据存储方式(一)”看看吧~~大概是在最后的位置。
前几天用这个东西中招了,真的是活活纠结了一天,结果得出的结论就是建库的问题,建议在做测试的时候如果对建库建表进行修改的时候,在运行前先把以前的APP删掉
参考代码:
http://download.csdn.net/detail/zhengyikuangge/9508207
更多相关文章
- 一句话锁定MySQL数据占用元凶
- Android客户端与服务器端数据同步
- Android应用架构之MVP实现
- Android中ListView分页加载数据功能实现
- 面试问题之:Android中ListView分页加载数据
- 【Android动态布局】之【ListView动态加载数据】
- Android实现电量控制降低耗电
- Android:复杂数据模型的传递(了解下吧)
- Android(安卓)4 通过 USB 连接扫描枪 获得扫描信息 解决扫描枪接