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();                }





更多相关文章

  1. 浅谈Java中Collections.sort对List排序的两种方法
  2. mybatisplus的坑 insert标签insert into select无参数问题的解决
  3. python起点网月票榜字体反爬案例
  4. Python技巧匿名函数、回调函数和高阶函数
  5. Python list sort方法的具体使用
  6. python list.sort()根据多个关键字排序的方法实现
  7. Android(安卓)异步加载解决方案(循环,多任务)
  8. Android(安卓)传输数据时Base64编码算法详解
  9. android的Instrumentation详解

随机推荐

  1. android 初级入门
  2. Android上实现MVP模式的途径
  3. Android(安卓)使用基于位置的服务(一)
  4. Android获取ROOT权限
  5. Android搜索建议(搜索联想)
  6. Android 7.0 移除设置中的某些项(辅助功能
  7. Android --- 图片的特效处理
  8. HTML5 开发 Mobile Web App
  9. 第15天android:使用sqlite
  10. Android判断应用是否存在 及 Android 关