android数据存储—SQLite
来源:互联网 发布:centos安装zlib 编辑:程序博客网 时间:2024/05/22 14:18
- SQLiteOpenHelper抽象类
- 该方法通常用4个参数的构造方法
通过得到实例后调用getWritableDatabase() || getReadableDatabase() 来创建和打开数据库!!
~~直接用栗子:
//这里是创建数据库帮助类public class KnowDBOpenHelper extends SQLiteOpenHelper{ /* * 创建Stories表 * */ public static final String CREATE_STORIES = "create table Stories(" + "id_first integer primary key autoincrement" + "id text, " + "images text, " + "title text)"; // + "two_table integer" 版成本升级后添加的 //构造方法实例时出入的参数:第二参数:数据库名, 第三参数:null,第四参数:版本号 public KnowDBOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase db) { db.execSQL(CREATE_STORIES);//创建stories表 } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { switch(oldVersion){ case 1: db.execSQL(CREATE_TWOTABLE); case 2: db.execSQL("alter table Book add colum two_table integer"); default: //这里没有break! 在2版本中Book添加一列信息 } }}
- 正常的使用
//添加数据 ContentValues values = new ContentValues(); //插入第一条数据;第一个参数对应表中的列名,第二个参数,添加的数据 values.put("id",222222); values.put("title","今天什么天气"); values.put("images","http:..22...jpg"); db.insert("Stories",null , null); values.clear();; //插入第二条数据 values.put("id",66666); values.put("title","明天什么天气"); values.put("images","http:..33...jpg"); db.insert("Stories",null , null); //更新数据 ContentValues values = new ContentValues(); values.put("title","后天什么天气"); values.put("images","http:....444...jpg"); db.update("Stories",values,"id= ?", new String[]{"666666"}); //更新所有 id = ?的行, ?是占位符, 在后面String[ ]中提供数据 //所有意思是 更新id=666666 这一行的title变更为"后天什么天气" ,images 变更为"http:....444...jpg" !!//删除数据 db.delete("Stories",null,null);//删除表中所有内容 db.delete("Stories","id = ?",new String[]{"222222"});//删除id = 222222这一行的所有内容! //也可以将id更改为 > < 符号都行!//查询数据 //调用query()会返回一个Cursor 对象 //参数依次是:表名,指定查询的 列S,指定where的约束条件,为where的中占位符提供具体的值,指定需要group by的列, 对指定group by的后的结果进一步过滤,指定结果的排序方式 Cursor cursor = db.query("Stories",null , null,null,null,null,null); List<Stories> list = new ArrayList<Stories>(); if(cursor.moveToFirst()){//光标移到第一行,有数据则返回true do{ //开始遍历Cursor对象 int id = cursor.getInt(cursor.getColumnIndex("id")); String title = cursor.getString(cursor.getColumnIndex("title")); String images = cursor.getString(cursor.getColumnIndex("images")); Stories story = new Stories(id, title, images); list.add(story);//将里面的每个Stories直接添加到集合中,可以返回一个集合对象 }while (cursor.moveToNext());//光标移到下一个位置,有数据则返回true! } cursor.close(); return list; }
- 下面方法是吧数据的操作封装起来使用的实战操作!!复用性!
public class KnowDB { //数据库名称 public static final String DB_NAME = "myknow"; //数据库版本 public static final int VERSION = 1; private static KnowDB knowDB; private SQLiteDatabase db; /* * 构造方法私有化 * */ private KnowDB (Context context){ KnowDBOpenHelper dbOpenHelper = new KnowDBOpenHelper(context,DB_NAME, null, VERSION); db = dbOpenHelper.getWritableDatabase(); } /* * 获取KnowDB实例 * */ public synchronized static KnowDB getIntance(Context context){ if(knowDB == null){ knowDB = new KnowDB(context); } return knowDB ; } /* * 将stories存入数据库 * */ public void saveStories(Stories stories){ if(stories != null){ ContentValues values = new ContentValues(); values.put("id", stories.getId()); values.put("images",stories.getImages()); values.put("title",stories.getTitle()); db.insert("Stories", null , values); } } /* * 从数据库读取所有的Stories信息 * */ public List<Stories> loadStories(){ List<Stories> list = new ArrayList<Stories>(); Cursor cursor = db.query("Stories",null , null ,null ,null, null, null); if(cursor.moveToFirst()){ do{ Stories stories = new Stories() ; stories.setId(cursor.getInt(cursor.getColumnIndex("id"))); stories.setImages(cursor.getString(cursor.getColumnIndex("images"))); stories.setTitle(cursor.getString(cursor.getColumnIndex("title"))); list.add(stories); }while (cursor.moveToNext()); if(cursor != null){ cursor.close(); } } return list; } /* * 用于更新数据,删除原有的数据 * */ public void deleteStories(){ db.delete("Stories",null ,null); }}
- 数据库也可以使用事务
KnowDBOpenHelper knowHelper = new KnowDBOpenHelper(this, "Database.db", null, 1); SQLiteDatabase db = knowHelper.getWritableDatabase();//这样数据库 和 表 都已经创建成功了 db.beginTransaction();//开启事务 try { db.delete("Stories",null,null); // if(true){ // throw new NullPointerException(); // }如果这try代码中出现异常,数据是删除不成功的!! ContentValues values = new ContentValues(); //插入第一条数据 values.put("id",45862); values.put("title","今天什么天气"); values.put("images","http:..22...jpg"); db.insert("Stories",null , null); db.setTransactionSuccessful();//事务已经执行成功 } catch (Exception e) { e.printStackTrace(); }finally { db.endTransaction();//结束事务! } }
0 0
- 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数据库
- Android中数据存储——SQLite数据库存储数据
- 【Android】数据存储之SQLite
- android使用sqlite存储数据
- linux常用命令总结
- 【淘宝开店教程】教你借618大促打造店铺爆款宝贝
- java工具类之BigDecimal
- iOS 开源项目整理
- onreadyStateChange在Firefox中存在的差异
- android数据存储—SQLite
- iOS软件开发添加电话、短信、邮件常用功能实现
- 日本岩手有个“风之电话”
- iOS 好的博客整理
- Timber 经典的android Log封装库
- Delphi XE不生成__history目录
- HTML5 canvas画布(三)
- APScheduler基本使用
- 第16周项目三--电子字典