这里有个概念上需要纠正的东西,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基本的数据库创建和使用
  2. Android环境变量作用--命令行操作(ADB、AVD等)
  3. Android中RecyclerView Adapter的骚操作
  4. Android(安卓)SQLiteOpenHelper Sqlite数据库升级onUpgrade
  5. Android程序版本控制工具类
  6. Android(安卓)startActivityForResult的使用
  7. Android(安卓)横竖屏操作
  8. android应用安全——数据安全
  9. 关于android 多媒体数据库

随机推荐

  1. Android(安卓)Recovery 升级整体架构和流
  2. android NDK/JNI环境配置及实例开发流程
  3. Android的引用jar包
  4. 安卓第一课
  5. 详解Android四种基本布局
  6. Android(安卓)RecyclerView实现Gallery、
  7. Android闹钟的实现!
  8. Unity播放视频(pc,android,ios)
  9. android statusbar 的修改
  10. Android(安卓)学习资料