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()方法用于查询数据。

Android SQLite数据库 《第一行代码》_第1张图片

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

随机推荐

  1. 检测 android ethernet 支持 IPV6 否
  2. android studio如何连接夜神模拟器
  3. Android(安卓)Studio代理以及证书导入
  4. 小米开源文件管理器MiCodeFileExplorer-
  5. android帮助文档打开慢的三种解决方法
  6. Android(安卓)RecyclerView之ListView显
  7. eclipse启动时报错org.eclipse.core.runt
  8. Android之如何获取网络类型并判断是否可
  9. Android(安卓)AIDL使用详解 .
  10. Intent的传递