编写一工程项目,使用ContentProvide发布数据,发布数据学号姓名成绩(请自行存入数据库),在另外创建一工程项目,点击获取Content数据按钮,通过ContentResolver获取数数据
时间: 2024-11-15 16:21:27 浏览: 0
ContentProvide 共享数据库 (附源代码)
在Android项目中,我们可以将数据存储在一个SQLite数据库中,并使用ContentProvider来分享数据。下面是一个简单的步骤概述:
**步骤1:创建数据库和表**
1. 首先,你需要创建一个`SchoolInfoDatabaseHelper`类,继承自SQLiteOpenHelper,用于管理数据库操作。在这个类里,定义一个包含学号、姓名和成绩的`SchoolInfo`表。
```java
public class SchoolInfoDatabaseHelper extends SQLiteOpenHelper {
// ...省略构造函数和版本信息
public void onCreate(SQLiteDatabase db) {
String createTable = "CREATE TABLE IF NOT EXISTS school_info ("
+ "id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "student_id TEXT,"
+ "name TEXT,"
+ "score INTEGER)";
db.execSQL(createTable);
}
// ...其他方法如onUpgrade等
}
```
**步骤2:添加数据到ContentProvider**
1. 在`SchoolInfoDatabaseHelper`中,你可以添加一个方法来插入数据,然后使用ContentProvider将其同步到数据库。
```java
// 存储数据
private static final Uri CONTENT_URI = ContentUris.withAppendedId(SchoolInfoContract.SCHOOL_INFO_CONTENT_URI, 0);
public void insertSchoolInfo(String studentID, String name, int score) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put(SchoolInfoContract.COLUMN_STUDENT_ID, studentID);
contentValues.put(SchoolInfoContract.COLUMN_NAME, name);
contentValues.put(SchoolInfoContract.COLUMN_SCORE, score);
Uri insertedUri = db.insert(SCHOOL_INFO_TABLE, null, contentValues);
if (insertedUri != null) {
getContext().getContentResolver().notifyChange(CONTENT_URI, null);
} else {
throw new SQLException("Failed to insert data");
}
}
```
这里假设你已经定义了ContentProvider的URI(`SchoolInfoContract.SCHOOL_INFO_CONTENT_URI`)和内容提供者类(`SchoolInfoContract`)。
**步骤3:获取数据并显示**
1. 创建一个新的项目,导入ContentProvider,并在需要获取数据的地方注册ContentObserver监听数据变化。
```java
// 获取数据
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(CONTENT_URI, SchoolInfoContract.CONTENT_TYPE);
startActivity(intent);
// 获取数据后,在另一个活动或Fragment中
ContentResolver resolver = getApplicationContext().getContentResolver();
Cursor cursor = resolver.query(CONTENT_URI, SchoolInfoContract.Columns.ALL_COLUMNS, null, null, null);
if (cursor != null) {
while (cursor.moveToNext()) {
String studentID = cursor.getString(cursor.getColumnIndex(SchoolInfoContract.Columns.STUDENT_ID));
String name = cursor.getString(cursor.getColumnIndex(SchoolInfoContract.Columns.NAME));
int score = cursor.getInt(cursor.getColumnIndex(SchoolInfoContract.Columns.SCORE));
// ...处理数据并显示
}
cursor.close();
}
// 注册ContentObserver
ContentObserver contentObserver = new ContentObserver(new Handler()) {
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
// 更新UI或者刷新列表
}
};
resolver.registerContentObserver(CONTENT_URI, true, contentObserver);
```
阅读全文