这里有个概念上需要纠正的东西,ContentProvider是android中共享数据的机制,而不是操作数据库的机制,android的数据库是sqlite。
下面演示如何建立数据库和操作它。
首先要来个SQLiteOpenHelper子类。
    public class DatabaseHelper extends SQLiteOpenHelper {                private final static String NAME="sharp.db" ;           public DatabaseHelper(Context context, String name, CursorFactory factory,                  int version) {              super(context, name, factory, version);              // TODO Auto-generated constructor stub          }          public DatabaseHelper(Context context){              super(context, NAME, null, 1 );          }                /**           * 用户第一次使用软件时调用,实现数据库的操作crud           */          @Override          public void onCreate(SQLiteDatabase db) {              // TODO Auto-generated method stub              Log.i("save" ,  "create" );              db.execSQL("create table person(personid integer primary key autoincrement,name varcahr(20),age integer)" );          }                @Override          public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {              // TODO Auto-generated method stub              db.execSQL("drop table if exists person" );              onCreate(db);          }          /**           * 根据版本号进行更新           * @param db           * @param mNewVersion           */          public void checkVersionCreate(SQLiteDatabase db,int mNewVersion){              int version = db.getVersion();              if (version != mNewVersion) {              db.beginTransaction();              try {              if (version == 0 ) {              onCreate(db);              }else{              onUpgrade(db, version,mNewVersion);              }              db.setVersion(mNewVersion); //设置为新的版本号              db.setTransactionSuccessful();              }              finally{              db.endTransaction();              }              }          }          /**           * 数据库名不空,获得数据库实例           * @param mDatabase           * @param mContext           * @param mName           * @param mFactory           * @return           */          public SQLiteDatabase getDatabase(SQLiteDatabase mDatabase,Context mContext,String mName,CursorFactory mFactory){                  if (mDatabase != null && mDatabase.isOpen() && !mDatabase.isReadOnly()) {                      return mDatabase; // The database is already open for business                      }                  if (mName == null) {                      mDatabase = SQLiteDatabase.create(null);                      } else {                          mDatabase = mContext.openOrCreateDatabase(mName, 0 , mFactory);                      }                  return mDatabase;              }      }  


然后再写个类来进行db的操作。
public   class  DbService {      private  DatabaseHelper databaseHelper;      private  Context context;      public  DbService(Context context){          this .context=context;          databaseHelper=new  DatabaseHelper( this .context);      }      //保存       public   void  save(Person person){          SQLiteDatabase db = databaseHelper.getWritableDatabase();          db.execSQL("insert into person(name, age) values(?,?)" , new  Object[]{person.getName(), person.getAge()});          }      //更新       public   void  update(Person person){          SQLiteDatabase db = databaseHelper.getWritableDatabase();          db.execSQL("update person set name=?,age=? where personid=?" ,          new  Object[]{person.getName(), person.getAge(),          person.getId()});          }      //根据id查找       public  Person find(Integer id){          SQLiteDatabase db = databaseHelper.getReadableDatabase();          Cursor cursor = db.rawQuery("select personid,name,age from person where personid=?" ,  new  String[]{String.valueOf(id)});          if (cursor.moveToNext()){  //迭代记录集           Person person = new  Person(); //实例化person           person.setId(cursor.getInt(cursor.getColumnIndex("personid" )));          person.setName(cursor.getString(1 ));          person.setAge(cursor.getInt(2 ));  //将查到的字段,放入person,           return  person;          }          cursor.close();//游标关闭           return   null ;          }      //删除       public   void  delete(Integer id){          SQLiteDatabase db=databaseHelper.getWritableDatabase();          db.execSQL("delete from person where id=?" , new  Object[]{id});      }      //       public  List<Person> getScrollData( int  firstResult,  int  maxResult){          List<Person> persons = new  ArrayList<Person>();          SQLiteDatabase db = databaseHelper.getReadableDatabase();          Cursor cursor = db.rawQuery("select personid,name,age from person limit ?,?" ,          new  String[]{String.valueOf(firstResult),String.valueOf(maxResult)});  //firstResult开始索引           while (cursor.moveToNext()){  //maxResult每页获取的记录数           Person person = new  Person();          person.setId(cursor.getInt(cursor.getColumnIndex("personid" )));          person.setName(cursor.getString(1 ));          person.setAge(cursor.getInt(2 ));          persons.add(person);          }          cursor.close();          return  persons;          }      //       public   long  getCount(){          SQLiteDatabase db = databaseHelper.getReadableDatabase();          Cursor cursor = db.rawQuery("select count(*) from person" ,  null );          //没有占位符参数的话,直接用null           cursor.moveToFirst();          long  count = cursor.getLong( 0 );          cursor.close();          return  count;          }      //       public   void  close(){          databaseHelper.close();          }  }   

当然Person是自己写的一个java bean。对Person信息的封装而已。
好了,这样你就可以完成对数据库和表的创建以及相关操作了。

更多相关文章

  1. Android SQLiteOpenHelper Sqlite数据库升级onUpgrade
  2. Android中RecyclerView Adapter的骚操作
  3. android基本的数据库创建和使用
  4. Android环境变量作用--命令行操作(ADB、AVD等)
  5. Android 横竖屏操作
  6. android的多线程操作(一)
  7. Android主线程里不允许网络操作
  8. Android开发SDK版本号和API level对照表,到Android 10.0
  9. android 面向对象数据库 db40使用demo

随机推荐

  1. android文件下载!download!
  2. 6、android 普通日志输出到SD卡
  3. Android(安卓)软件测试日志文件抓取
  4. Avoid memory leaks on Android
  5. 弹出软键盘时,activity界面整体上移
  6. 解决Android(安卓)SDK Manager国内下载缓
  7. [Android]模仿QQ在listview上滑动出现删
  8. Android(安卓)-- DiskLruCache
  9. Android(安卓)NDK编程: JNI技巧
  10. Android开发1——查找所需要出示权限的内