80,351
社区成员
发帖
与我相关
我的任务
分享
public class DatabaseCreater extends SQLiteOpenHelper {
private static String name = "person";
private static int version = 1;
public DatabaseCreater(Context context) {
super(context, name, null, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
// TODO Auto-generated method stub
String sql = "create table man(id int(4),name varchar(20),age int(3),sex varchar(5)," +
"constraint person_PK primary key(id));";
db.execSQL(sql);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub
}
}
public class ServeProvider extends ContentProvider {
private static final UriMatcher URI_MATCHER = new UriMatcher(UriMatcher.NO_MATCH);
private static final int PERSON = 1;
private static final int PEOPLE = 2;
private DatabaseCreater dc;
private SQLiteDatabase sdb;
private String sql = "";
private StringBuffer sb = new StringBuffer();
private Set<String> keySet = new HashSet<String>();
private Iterator<String> ir = null;
static {
URI_MATCHER.addURI("com.example.studyofloadermanager.ServeProvider",
"person/#", PERSON);
URI_MATCHER.addURI("com.example.studyofloadermanager.ServeProvider",
"people",PEOPLE);
}
public ServeProvider() {
// TODO Auto-generated constructor stub
}
@Override
public boolean onCreate() {
// TODO Auto-generated method stub
dc = new DatabaseCreater(getContext());
return false;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
// TODO Auto-generated method stub
Cursor cursor = null;
@SuppressWarnings("unused")
String where = "";
sdb = dc.getReadableDatabase();
int flag = URI_MATCHER.match(uri);
switch(flag){
case PERSON:
long id = ContentUris.parseId(uri);
where = " id="+id+" ";
if(selection!=null && !selection.equals("")){
where += " and "+selection;
}
sql = "select * from person where "+where;
break;
case PEOPLE:
sql = "select * from person";
break;
}
cursor = sdb.rawQuery(sql, null);
sdb.close();
return cursor;
}
@Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
String type = "";
int flag = URI_MATCHER.match(uri);
if(flag == PERSON){
type = "vnd.android.cursor.item/person";
}else{
type = "vnd.android.cursor.dir/people";
}
return type;
}
public void insert(String[] values){
int len = sb.length();
if(len>0){
sb.delete(0, len);
}
sql = "insert into person(id,name,age,sex) values(?,?,?,?);";
sdb = dc.getWritableDatabase();
sdb.execSQL(sql,values);
sdb.close();
}
@Override
public Uri insert(Uri uri, ContentValues values) {
// TODO Auto-generated method stub
/*keySet = values.keySet();
ir = keySet.iterator();
int len = sb.length();
if(len>0){
sb.delete(0, len);
}
int i=0;
while(ir.hasNext()){
String key = ir.next();
String param = (String) values.get(key);
sb.append(param+",");
}
String[] params = sb.toString().split(",");
sql = "insert into person(id,name,age,sex) values(?,?,?,?);";
sdb = dc.getWritableDatabase();
sdb.execSQL(sql, params);
sdb.close();*/
return null;
}
@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
// TODO Auto-generated method stub
int flag = URI_MATCHER.match(uri);
String where = "";
sdb = dc.getWritableDatabase();
if(flag == PERSON){
long id = ContentUris.parseId(uri);
where = " id="+id+" ";
if(selection!=null && !selection.equals("")){
where += " and "+selection;
}
sql = "delete from person "+where;
}else{
/*
* 删除整张表的数据,慎用
*/
sql = "delete from person ";
}
sdb.execSQL(sql);
sdb.close();
return 0;
}
@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
// TODO Auto-generated method stub
int len = sb.length();
if(len>0){
sb.delete(0, len);
}
keySet = values.keySet();
ir = keySet.iterator();
while(ir.hasNext()){
String key = ir.next();
String value = values.getAsString(key);
sb.append(value+",");
}
String[] params = sb.toString().split(",");
sql = "update person set name=?,age=?,sex=? where id="+ContentUris.parseId(uri);
sdb = dc.getWritableDatabase();
sdb.execSQL(sql, params);
sdb.close();
return 0;
}
}
public class MainActivity extends Activity implements OnClickListener{
private static final int requestCode = 1;
private ListView lv;
private Button b1,b2;
private LoaderManager lm;
private LoaderCallbacks<Cursor> lcbc;
private ArrayList<Map<String, String>> almss;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
lv = (ListView) this.findViewById(R.id.lv);
b1 = (Button) this.findViewById(R.id.b1);
b2 = (Button) this.findViewById(R.id.b2);
lcbc = new LoaderCallbacks<Cursor>() {
@Override
public void onLoaderReset(Loader<Cursor> loader) {
// TODO Auto-generated method stub
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
// TODO Auto-generated method stub
almss = new ArrayList<Map<String, String>>();
while(data.moveToNext()){
Map<String,String> mss = new HashMap<String,String>();
String mesg = "";
for(int i=0;i<data.getCount();i++){
String colName = data.getColumnName(i);
String colValue = data.getString(i);
mss.put(colName, colValue);
}
almss.add(mss);
}
lv.setAdapter(new SimpleAdapter(MainActivity.this, almss,
R.layout.activity_main, new String[] { "id", "name",
"age", "sex" }, new int[] { R.id.tv1,
R.id.tv2,R.id.tv3, R.id.tv4 }));
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
// TODO Auto-generated method stub
CursorLoader cl = new CursorLoader(MainActivity.this);
Uri uri = Uri
.parse("content://com.example.studyofloadermanager.ServeProvider/people");
cl.setUri(uri);
return cl;
}
};
lm = getLoaderManager();
lm.initLoader(100, null,lcbc);
b1.setOnClickListener(this);
b2.setOnClickListener(this);
}