Android SQLite数据库 《第一行代码》
16lz
2021-01-23
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(); }
更多相关文章
- Android 传输数据时Base64编码算法详解
- [置顶] Android中数据存储的5种方法
- Android webview与js交换JSON对象数据示例
- Android周学习Step By Step(6)--Android的数据库SQLite
- [Android]为Spinner填充数据后设置默认值的问题
- Android中使用SQlite进行数据操作
- Android开发中高效的数据结构用SparseArray代替HashMap
- Android Preference的使用总结(很全很详细)以及SharedPreferences
- 系出名门Android(9) - 数据库支持(SQLite)