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
今日推荐
周排行