Android SQLite数据库 《第一行代码》
来源:互联网 发布:扣白底图软件 编辑:程序博客网 时间:2024/05/22 13:50
SQLite是Android自带的数据库,为了方便管理,Android提供了一个SQLiteOpenHelper的类来帮助管理数据库。但是SQLiteOpenHelper是一个抽象类,我们使用的时候需要创建自己的一个类去继承,并且实现抽象类中的两个方法onCreate()和onUpgrade()方法,onCreate()方法在创建数据库表的时候调用,onUpgrade()方法在更新数据库表到时候调用。
一、创建数据库表
public class MyDatabaseHelper extends SQLiteOpenHelper { public static final String CREATE_BOOK = "create table Book(" + "id integer primary key autoincrement," + "author text," + "price real," + "pages integer," + "name text)"; private Context mContext; public MyDatabaseHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version){ super(context,name,factory,version); mContext = context; } @Override public void onCreate(SQLiteDatabase db){ db.execSQL(CREATE_BOOK); //Toast.makeText(mContext,"Create succeeded",Toast.LENGTH_SHORT).show(); } @Override public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){ }}二、升级数据库
public class MyDatabaseHelper extends SQLiteOpenHelper { public static final String CREATE_BOOK = "create table Book(" + "id integer primary key autoincrement," + "author text," + "price real," + "pages integer," + "name text," + "category_id integer)"; public static final String CREATE_CATEGORY = "create table Category(" + "id integer primary key autoincrement," + "category_name text," + "category_code integer)"; private Context mContext; public MyDatabaseHelper(Context context,String name,SQLiteDatabase.CursorFactory factory,int version){ super(context,name,factory,version); mContext = context; } @Override public void onCreate(SQLiteDatabase db){ db.execSQL(CREATE_BOOK); db.execSQL(CREATE_CATEGORY); //Toast.makeText(mContext,"Create succeeded",Toast.LENGTH_SHORT).show(); } @Override public void onUpgrade(SQLiteDatabase db,int oldVersion,int newVersion){ switch (oldVersion){ case 1: db.execSQL(CREATE_CATEGORY); case 2: db.execSQL("alert table Book add column category_id integer"); default: } }}三、添加数据
SQLiteDatabase提供来一个insert()方法用于添加数据,需要三个参数,第一个参数:表名,第二个参数:自动赋值,一般传入null,第三个参数:ContentValues对象,保存着添加的数据,用put方法来添加数据
SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("name","The Da Vinci Code"); values.put("author","Dan Brown"); values.put("pages",454); values.put("price",16.96); db.insert("Book", null, values); values.clear(); values.put("name","The Lost Symbol"); values.put("author","Dan Brown"); values.put("pages",510); values.put("price",19.95); db.insert("Book", null, values);四、更新数据
SQLiteDatabase提供来一个update()方法用于对数据进行更新,需要四个参数,第一个参数:表名,第二个参数:ContentValue对象,保存着要更新的数据,第三第四个数据是对表中的记录进行筛选过,第三个参数,相对应的是查询语句的where部分,第四个参数为第三个参数中的占位符提供数据
SQLiteDatabase db = dbHelper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("price",10.99); db.update("Book", values, "name = ?", new String[]{"The Da Vinci Code"});五、删除数据
SQLiteDatabase中提供了delete方法用于删除数据,需要三个参数,第一个参数:表名,第二第三个参数作用于update()方法中第三第四个参数的作用一致。如果不指定的话表示删除所有行。
SQLiteDatabase db = dbHelper.getWritableDatabase(); db.delete("Book", "pages > ?", new String[]{"500"});六、查询数据
SQLiteDatabase中提供来query()方法用于查询数据。
SQLiteDatabase db = dbHelper.getWritableDatabase(); Cursor cursor = db.query("Book",null,null,null,null,null,null); if(cursor.moveToFirst()){ do{ String name = cursor.getString(cursor.getColumnIndex("name")); String author = cursor.getString(cursor.getColumnIndex("author")); int pages = cursor.getInt(cursor.getColumnIndex("pages")); double price = cursor.getDouble(cursor.getColumnIndex("price")); Log.d("SQLiteActivity","book name is " + name); Log.d("SQLiteActivity","book author is " + author); Log.d("SQLiteActivity","book pages is " + pages); Log.d("SQLiteActivity","book price is " + price); }while(cursor.moveToNext()); } cursor.close();
以上操作也可以直接使用sql语句完成。
七、事务
为了保证数据库的同步,需要使用事务来提交地数据库的操作。
SQLiteDatabase db = dbHelper.getWritableDatabase(); db.beginTransaction(); try{ 做一些事情 db.setTransactionSuccessful(); }catch (Exception e){ e.printStackTrace(); }finally { db.endTransaction(); }
0 0
- Android SQLite数据库 《第一行代码》
- 第一行代码-6.4 SQLite数据库存储
- 数据存储之SQLite 数据库存储——第一行代码Android学习笔记
- SQLite数据库学习笔记(《Android第一行代码》读书笔记1)
- 第一行代码-6.5 SQLite数据库的最佳实践
- 入门Android开发--第一行代码--笔记系列(SQLite)
- Android 事务 SQLite 数据(参考《第一行代码》)
- Android第一行代码
- Andoird:用LitePal操作数据库(第一行代码Android学习)
- 《第一行代码Android》读书笔记
- 《第一行代码Android》摘要
- 第一行代码-----Android 第一章
- 第一行代码Android-------Activity
- 《Android第一行代码》笔记
- 《第一行代码Android》笔记
- Android第一行代码读书笔记
- Android第一行代码小结
- 《第一行代码--android》笔记
- 微信应用开发记录
- 修改ubuntu默认开机亮度
- PHP内存泄漏检测方法
- 黑马52期学后总结笔记(十一)
- 创建队列 NSOperationQueue dispatch队列组
- Android SQLite数据库 《第一行代码》
- 最令人发指叫人吐血的代码风格
- Cocos-2dx台球游戏实现
- Java对象 json之间的转换(json-lib)
- Android常用开源项目compile
- ios UISearchDisplayController 实现 UITableView 搜索功能
- windows计划任务执行php
- 终极 Shell - ZSH
- android自定义控件实现自动换行效果