关于contentprovider的问题,快疯了。。。求大侠相救。。

package com.example.mycontentprovider;

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

public class ContentDate {
public static final String AUTHORITY = "com.example.mycontentprovider";
public static final String DATABASE_NAME = "teacher.db";
public static final int DATABASE_VERSION = 4;
public static final String USERAS_TABLE_NAME = "teacher";

public static final class UserTableData implements BaseColumns{
public static final String TABLE_NAME = "teacher";
public static final Uri CONTENT_URI = Uri.parse("content://"+AUTHORITY+"/teacher");
public static final int TEACHERS = 1;
public static final int TEACHER = 2;
public static final String TITLE = "title";
public static final String NAME = "name";
public static final String DATA_ADDED = "data_added";
public static final String SEX = "sex";
public static final String DEFAULT_SORT_ORDER = "_id desc";

}

}

package com.example.mycontentprovider;

import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.os.Build.VERSION;

public class DbOpenHelper extends SQLiteOpenHelper{

public DbOpenHelper(Context context, String name,CursorFactory factory, int version){
super(context,name,factory,version);


public DbOpenHelper(Context context, String name, int version){
super(context, name, null, version);
}

@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL( "create table " + ContentDate.USERAS_TABLE_NAME + "(" 
+ContentDate.UserTableData._ID + " INTEGER PRIMARY KEY autoincrement,"
+ContentDate.UserTableData.NAME + "varchar(20),");
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// TODO Auto-generated method stub

}

}



package com.example.mycontentprovider;

import android.app.Activity;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;


public class MainActivity extends Activity {
private Button mBtn_insert;
private Button mBtn_query;
private Button mBtn_query_all;
private Button mBtn_update;
private Button mBtn_delete;


Uri uri_teacher = Uri.parse("content://com.example.mycontentprovider/teacher");
Uri uri_teachers = Uri.parse("content://com.example.mycontentprovider/teachers");

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mBtn_insert = (Button) findViewById(R.id.btn_insert);
        mBtn_query = (Button) findViewById(R.id.btn_query);
        mBtn_query_all = (Button) findViewById(R.id.btn_query_all);
        mBtn_update = (Button) findViewById(R.id.btn_update);
        mBtn_delete = (Button) findViewById(R.id.btn_delete);
        
        mBtn_insert.setOnClickListener(new InsertListener());
        mBtn_query_all.setOnClickListener(new QueryListener());
        mBtn_query.setOnClickListener(new QueryListener());
        mBtn_update.setOnClickListener(new UpdateInstener());
        mBtn_delete.setOnClickListener(new DeleteInstener());
        
    }

    class InsertListener implements OnClickListener {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ContentResolver cr = getContentResolver();
ContentValues cv = new ContentValues();
cv.put("title", "教授");
cv.put("sex", true);
cv.put("name", "小明");
Uri uri = cr.insert(uri_teachers, cv);
System.out.println(uri.toString());

}
    
    }
    
    class QueryAllListener implements OnClickListener{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ContentResolver cr = getContentResolver();
Cursor c = cr.query(uri_teacher, null, "_ID=?", new String[]{" 1 "}, null);
if(c.moveToFirst() == false){
return ;
}
int i = c.getColumnIndex("name");
System.out.println(c.getString(i));
c.close();

}

    }
    
    class QueryListener implements OnClickListener{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ContentResolver cr = getContentResolver();
Cursor c =cr.query(uri_teacher, null, null, null, null);
System.out.println(c.getCount());

}
    
    }
    
    class UpdateInstener implements OnClickListener{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ContentResolver cr = getContentResolver();
ContentValues cv = new ContentValues();
cv.put("name", "小猪");
 String where = "_ID=?"; 
int update_number = cr.update(uri_teacher, cv, where, new String[] { "3" });
System.out.println("updated"+":"+update_number);
}
    
    }
    
    class DeleteInstener implements OnClickListener{

@Override
public void onClick(View v) {
// TODO Auto-generated method stub
ContentResolver cr = getContentResolver();
String where = "_ID=?";
int delete_number = cr.delete(uri_teacher, where, new String []{" 1 "});
System.out.println("delete_number" + delete_number);
}

    }


   
}




package com.example.mycontentprovider;

import android.content.ContentProvider;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.PeriodicSync;
import android.content.UriMatcher;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.net.Uri;
import android.text.TextUtils;

public class TeacherContentProvider extends ContentProvider{
private DbOpenHelper dbopenhelper = null ;
public static final UriMatcher urimatcher;
static {
urimatcher = new UriMatcher(UriMatcher.NO_MATCH);
urimatcher.addURI(ContentDate.AUTHORITY, "teacher", ContentDate.UserTableData.TEACHERS);
urimatcher.addURI(ContentDate.AUTHORITY, "teacher/#", ContentDate.UserTableData.TEACHER);
}

@Override
public boolean onCreate() {
// TODO Auto-generated method stub
dbopenhelper = new DbOpenHelper(this.getContext(), ContentDate.DATABASE_NAME, ContentDate.DATABASE_VERSION);
return true;
}

@Override
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
// TODO Auto-generated method stub
SQLiteDatabase db = dbopenhelper.getReadableDatabase();
int count = 0;
switch (urimatcher.match(uri)) {
case ContentDate.UserTableData.TEACHERS:
return db.query(ContentDate.UserTableData.TABLE_NAME, projection, selection, selectionArgs, null, null, null);

case ContentDate.UserTableData.TEACHER:
long personId;
personId = ContentUris.parseId(uri);
String where = "_ID=" + personId;
where += !TextUtils.isEmpty(selection) ? " and (" + selection + ")" : "";
return db.query(ContentDate.UserTableData.TABLE_NAME, projection, where, null, null, null, sortOrder);

default:
throw new IllegalArgumentException();
}
}



@Override
public Uri insert(Uri uri, ContentValues values) {
// TODO Auto-generated method stub
SQLiteDatabase db = dbopenhelper.getWritableDatabase(); 
long id = 0 ;

switch (urimatcher.match(uri)) {
case ContentDate.UserTableData.TEACHERS:
id = db.insert(ContentDate.UserTableData.TABLE_NAME, null, values);
return ContentUris.withAppendedId(uri, id);

case ContentDate.UserTableData.TEACHER:
id = db.insert(ContentDate.UserTableData.TABLE_NAME, null, values);
String path = uri.toString();
return Uri.parse(path.substring(0, path.lastIndexOf("/"))+ id);

default:
throw new IllegalArgumentException("Unknown_URI123" + uri);
}

}

@Override
public int delete(Uri uri, String selection, String[] selectionArgs) {
// TODO Auto-generated method stub
int count ;
SQLiteDatabase db = dbopenhelper.getWritableDatabase();
switch (urimatcher.match(uri)) {
case ContentDate.UserTableData.TEACHERS:
db.delete(ContentDate.UserTableData.TABLE_NAME, selection, selectionArgs);
break;

case ContentDate.UserTableData.TEACHER:
long personId = ContentUris.parseId(uri);
String where = "_ID=" + personId;
where += !TextUtils.isEmpty(selection) ? " and (" + selection + ")" : "";
count = db.delete(ContentDate.UserTableData.TABLE_NAME, where, selectionArgs);
break;

default:
throw new IllegalArgumentException();
}
return 0;
}

@Override
public int update(Uri uri, ContentValues values, String selection,
String[] selectionArgs) {
// TODO Auto-generated method stub
SQLiteDatabase db = dbopenhelper.getWritableDatabase();
int count = 0;
switch (urimatcher.match(uri)) {
case ContentDate.UserTableData.TEACHERS:
count = db.update(ContentDate.UserTableData.TABLE_NAME, values, selection, selectionArgs);
break;

case ContentDate.UserTableData.TEACHER:
long personId = ContentUris.parseId(uri);
String where = "_ID=" + personId;
where += !TextUtils.isEmpty(selection) ? " and (" + selection + ")" : "";
count = db.update(ContentDate.UserTableData.TABLE_NAME, values, where, selectionArgs);
break;
default:
throw new IllegalArgumentException();
}
db.close();
return count;
}

@Override
public String getType(Uri uri) {
// TODO Auto-generated method stub
return null;
}

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值