Android 将数据库添加到片段
我有一个简单的数据库,里面有三星的型号和价格Android 将数据库添加到片段,android,database,android-fragments,Android,Database,Android Fragments,我有一个简单的数据库,里面有三星的型号和价格 public class DBHelper extends SQLiteOpenHelper implements BaseColumns { public static final String TABLE_NAME = "samsung"; public static final String NAME = "model"; public static final String MODEL_PRICE = "price"; public DB
public class DBHelper extends SQLiteOpenHelper implements BaseColumns {
public static final String TABLE_NAME = "samsung";
public static final String NAME = "model";
public static final String MODEL_PRICE = "price";
public DBHelper(Context context) {
super(context, PhoneProvider.DB_CONTACTS, null, 6);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE " + TABLE_NAME
+ " (_id INTEGER PRIMARY KEY AUTOINCREMENT, " + NAME
+ " TEXT, " + MODEL_PRICE + " TEXT);");
ContentValues values = new ContentValues();
values.put(NAME, "Galaxy S4 Active");
values.put(MODEL_PRICE, "680");
db.insert(TABLE_NAME, NAME, values);
values.put(NAME, "Galaxy S4");
values.put(MODEL_PRICE, "659");
db.insert(TABLE_NAME, NAME, values);
values.put(NAME, "Galaxy Note II");
values.put(MODEL_PRICE, "627");
db.insert(TABLE_NAME, NAME, values);
values.put(NAME, "Galaxy Mega 6.3");
values.put(MODEL_PRICE, "581");
db.insert(TABLE_NAME, NAME, values);
values.put(NAME, "Galaxy S4 Zoom");
values.put(MODEL_PRICE, "575");
db.insert(TABLE_NAME, NAME, values);
values.put(NAME, "Galaxy SIII");
values.put(MODEL_PRICE, "523");
db.insert(TABLE_NAME, NAME, values);
values.put(NAME, "Galaxy S4 Mini Duos");
values.put(MODEL_PRICE, "500");
db.insert(TABLE_NAME, NAME, values);
values.put(NAME, "Galaxy Mega 5.8");
values.put(MODEL_PRICE, "418");
db.insert(TABLE_NAME, NAME, values);
values.put(NAME, "Galaxy Grand Duos");
values.put(MODEL_PRICE, "366");
db.insert(TABLE_NAME, NAME, values);
values.put(NAME, "Galaxy SII Plus");
values.put(MODEL_PRICE, "349");
db.insert(TABLE_NAME, NAME, values);
values.put(NAME, "Galaxy SIII Mini");
values.put(MODEL_PRICE, "314");
db.insert(TABLE_NAME, NAME, values);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
} }
数据库与ContentProvider一起工作
public class PhoneProvider extends ContentProvider {
public static final String DB_CONTACTS = "phones.db";
public static final Uri CONTENT_URI = Uri.parse(
"content://com.example.newtransaction.phoneprovider/phone");
public static final int URI_CODE = 1;
public static final int URI_CODE_ID = 2;
private static final UriMatcher mUriMatcher;
private static HashMap<String, String> mContactMap;
private SQLiteDatabase db;
static {
mUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
mUriMatcher.addURI("com.example.newtransaction.phoneprovider",
DBHelper.TABLE_NAME, URI_CODE);
mUriMatcher.addURI("com.example.newtransaction.phoneprovider",
DBHelper.TABLE_NAME + "/#", URI_CODE_ID);
mContactMap = new HashMap<String, String>();
mContactMap.put(DBHelper._ID, DBHelper._ID);
mContactMap.put(DBHelper.NAME, DBHelper.NAME);
mContactMap.put(DBHelper.MODEL_PRICE, DBHelper.MODEL_PRICE);
}
public String getDbName() {
return(DB_CONTACTS);
}
@Override
public boolean onCreate() {
db = (new DBHelper(getContext())).getWritableDatabase();
return (db == null) ? false : true;
}
@Override
public Cursor query(Uri url, String[] projection,
String selection, String[] selectionArgs, String sort) {
String orderBy;
if (TextUtils.isEmpty(sort)) {
orderBy = DBHelper.NAME;
}
else {
orderBy = sort;
}
Cursor c = db.query(DBHelper.TABLE_NAME, projection, selection, selectionArgs,
null, null, orderBy);
c.setNotificationUri(getContext().getContentResolver(), url);
return c;
}
@Override
public Uri insert(Uri url, ContentValues inValues) {
ContentValues values = new ContentValues(inValues);
long rowId = db.insert(DBHelper.TABLE_NAME, DBHelper.NAME, values);
if (rowId > 0) {
Uri uri = ContentUris.withAppendedId(CONTENT_URI, rowId);
getContext().getContentResolver().notifyChange(uri, null);
return uri;
}
else {
throw new SQLException("Failed to insert row into " + url);
}
}
@Override
public int delete(Uri url, String where, String[] whereArgs) {
int retVal = db.delete(DBHelper.TABLE_NAME, where, whereArgs);
getContext().getContentResolver().notifyChange(url, null);
return retVal;
}
@Override
public int update(Uri url, ContentValues values,
String where, String[] whereArgs) {
int retVal = db.update(DBHelper.TABLE_NAME, values, where, whereArgs);
getContext().getContentResolver().notifyChange(url, null);
return retVal;
}
@Override
public String getType(Uri uri) {
return null;
} }
其中一个片段的代码
public class Fragment2 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
container.removeAllViews();
return inflater.inflate(R.layout.fragment2, null);
} }
它基于Goloshchapov-GoogleAndroid一书中的一个例子。移动编程
我是Android新手 在你的片段中
public class Fragment2 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
PhoneProvider pp =new PhoneProvider();
pp.query(your query);
return inflater.inflate(R.layout.fragment2, null);
} }
您需要在您的片段中添加此代码
DBHelper DBHelper=新的DBHelper(getActivity()) 您的问题不清楚您到底想做什么?如果您想在多个应用程序之间进行通信,ContentProvider是有用的。要在他们之间共享数据。。。你的问题就像“如何将SQLite与android一起使用”回答:尝试一些图图,然后尝试自己找到问题的答案。只有到那个时,若你们有阻塞问题,来堆栈溢出来解除自己的阻塞/@Biraj Zalavadia我想在fragment@Yume117我试着从tuto那里找到答案,但是这个例子在一个简单的应用程序上工作,但是不能得到一个片段。这个视图的顺序通常是,了解片段,了解sqlite,然后两者一起使用。应该没有问题:/在片段和活动中使用sqlite基本上是一样的。只是说
public class Fragment2 extends Fragment {
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
PhoneProvider pp =new PhoneProvider();
pp.query(your query);
return inflater.inflate(R.layout.fragment2, null);
} }