提供共享数据库

1、创建一个Sqlite数据库助手类、继承SQLiteOpenHelper
2、创建一个实体类、用包装一些常量
3、创建数据库共享的类、继承ContentProvider
4、注册共享的类
<provider
       android:name="com.share.PersonContentProvider"
       android:authorities="com.android.PersonContentProvider" > </provider>
       //表示:唯一标识




//Sqlite助手类
package com.share;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

public class DBHelper extends SQLiteOpenHelper {

public final static String DB_NAME="StuInfo.db";
public final static int DB_VALUES=1;
public final static String TAB_NAME="user";
public DBHelper(Context context) {
//创建数据库
super(context, DB_NAME, null, DB_VALUES);

}

public void onCreate(SQLiteDatabase db) {
//创建表
db.execSQL("create table "+TAB_NAME+"("+MyUser.UserColumns._ID+" integer primary key autoincrement,"+
MyUser.UserColumns.USER_NAME+" text,"+MyUser.UserColumns.USER_AGE+" integer)");

}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

}



//实体类
package com.share;

import android.net.Uri;
import android.provider.BaseColumns;

public class MyUser {
//提供一个Uri地址
public final static String authority="com.android.PersonContentProvider";
public final static class UserColumns implements BaseColumns{
public final static Uri CONTENT_URI=Uri.parse("content://"+authority);
public final static String USER_NAME="username";
public final static String USER_AGE="userage";
}
}









//数据库共享类
package com.share;

import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteQueryBuilder;
import android.net.Uri;

public class PersonContentProvider extends ContentProvider {

private DBHelper helper;
public SQLiteDatabase db;
public int delete(Uri uri, String selection, String[] selectionArgs) {

return 0;
}


public String getType(Uri uri) {

return null;
}


public Uri insert(Uri uri, ContentValues values) {
db=helper.getWritableDatabase();
//返回当前插入数据的行号
long  rowid=db.insert(DBHelper.TAB_NAME, null, values);
if(rowid>0){
Uri  rowUri=ContentUris.withAppendedId(uri, rowid);
return rowUri;
}
return null;
}


public boolean onCreate() {
//初始化数据库
helper = new DBHelper(getContext());
return false;
}


public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
db=helper.getReadableDatabase();
SQLiteQueryBuilder  sqb=new SQLiteQueryBuilder();
//插入的数据的表
sqb.setTables(DBHelper.TAB_NAME);
Cursor c=sqb.query(db, projection, null, null, null, null, null);
c.setNotificationUri(getContext().getContentResolver(), uri);
return c;
}


public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {

return 0;
}

}










//MniaActivity

package com.share;

import android.os.Bundle;
import android.widget.Toast;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;

public class MainActivity extends Activity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
insertData();
display();
}

public void insertData() {
ContentResolver cr = getContentResolver();
ContentValues  cv=new ContentValues();
cv.put(MyUser.UserColumns.USER_NAME, "张学友");
cv.put(MyUser.UserColumns.USER_AGE, 55);
cr.insert(MyUser.UserColumns.CONTENT_URI, cv);
}

@SuppressLint("ShowToast")
public Cursor  display(){
ContentResolver cr = getContentResolver();
Cursor c =cr.query(MyUser.UserColumns.CONTENT_URI,
new String[]{MyUser.UserColumns.USER_NAME,MyUser.UserColumns.USER_AGE}, null, null, null);
while(c.moveToNext()){
String name=c.getString(0);
int age=c.getInt(1);
Toast.makeText(MainActivity.this, name+"  "+age, 1000).show();
}
return c;

}
}










猜你喜欢

转载自x1ong.iteye.com/blog/1881932
今日推荐