zoukankan      html  css  js  c++  java
  • ContentProvider-------------自定义的内容提供者 然后去访问

    自定义提供者

     1 import android.content.Context;
     2 import android.database.DatabaseErrorHandler;
     3 import android.database.sqlite.SQLiteDatabase;
     4 import android.database.sqlite.SQLiteDatabase.CursorFactory;
     5 import android.database.sqlite.SQLiteOpenHelper;
     6 
     7 public class DBHelper extends SQLiteOpenHelper {
     8 
     9     public DBHelper(Context context) {
    10         super(context, "users.db", null, 1);
    11     }
    12 
    13     @Override
    14     public void onCreate(SQLiteDatabase db) {
    15         // TODO 初始化数据库
    16         db.execSQL("create table t_user(_id integer primary key,uname,upass,money)");
    17         
    18         db.execSQL("create table t_order(_id integer primary key,user_id,price,productname)");
    19         
    20         db.execSQL("insert into t_user(uname,upass,money) values('lisi','123',200)");
    21         
    22         db.execSQL("insert into t_user(uname,upass,money) values('zhangsi','1234',2000)");
    23     }
    24 
    25     @Override
    26     public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    27         // TODO 数据库升级时执行该方法
    28         if(newVersion>oldVersion)
    29         {
    30             db.execSQL("drop table if exists t_user");
    31             db.execSQL("drop table if exists t_order");
    32             //并且重新初始化数据库也可以不重新加载
    33             onCreate(db);
    34         }
    35         
    36     }
    37 
    38     
    39 
    40 }
    DBHelper
      1 import com.qianfeng.gp08_day25_contentprovider1.tool.DBHelper;
      2 
      3 import android.content.ContentProvider;
      4 import android.content.ContentUris;
      5 import android.content.ContentValues;
      6 import android.content.UriMatcher;
      7 import android.database.Cursor;
      8 import android.database.sqlite.SQLiteDatabase;
      9 import android.net.Uri;
     10 
     11 public class UserContentProvider extends ContentProvider {
     12     
     13     //声明该ContentProvider的唯一标识--通常使用包名+数据库名--必须小写
     14     public static final String AUTHORITY ="com.qianfeng.gp08_day25_contentprovider1.users";
     15     
     16     //为该组件中可以被外界访问的数据库中的资源定义Code标识
     17     public static final int CODE_USER = 1;
     18     public static final int CODE_ORDER = 8;
     19     
     20     //定义访问资源的Uri的匹配器对象--使用该类生成被访问的资源的Uri
     21     private static UriMatcher uriMatcher;
     22     
     23     static{
     24         uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
     25         //content://com.qianfeng.gp08_day25_contentprovider1.users/user
     26         uriMatcher.addURI(AUTHORITY, "user", CODE_USER);
     27         
     28         //content://com.qianfeng.gp08_day25_contentprovider1.users/order
     29         uriMatcher.addURI(AUTHORITY, "order", CODE_ORDER);
     30     }
     31     
     32     private DBHelper dbHelper;
     33 
     34     @Override
     35     public boolean onCreate() {
     36         // TODO 初始化 数据库操作的工具类
     37         dbHelper = new DBHelper(getContext());
     38         return false;
     39     }
     40 
     41     @Override
     42     public Cursor query(Uri uri, String[] projection, String selection,
     43             String[] selectionArgs, String sortOrder) {
     44         SQLiteDatabase  db = dbHelper.getReadableDatabase();
     45         Cursor cursor = null;
     46         
     47         int code = uriMatcher.match(uri);
     48         
     49         switch(code)
     50         {
     51         case CODE_USER:
     52             cursor = db.query("t_user", projection, selection, selectionArgs, null, null, sortOrder);
     53             break;
     54         case CODE_ORDER:
     55             cursor = db.query("t_order", projection, selection, selectionArgs, null, null, sortOrder);
     56             break;
     57         }
     58         return cursor;
     59     }
     60 
     61 
     62     @Override
     63     public Uri insert(Uri uri, ContentValues values) {
     64         // TODO 向数据库中插入数据
     65         SQLiteDatabase db =dbHelper.getWritableDatabase();
     66         if(uriMatcher.match(uri)==CODE_USER)
     67         {
     68             long id = db.insert("t_user", null, values);
     69             
     70             //返回新插入的记录的 Uri
     71             //content://com.qianfeng.gp08_day25_contentprovider1.users/user/6
     72             return ContentUris.withAppendedId(uri, id);
     73         }
     74         return null;
     75     }
     76 
     77     @Override
     78     public int delete(Uri uri, String selection, String[] selectionArgs) {
     79         // TODO 删除数据库中的数据
     80         SQLiteDatabase db = dbHelper.getWritableDatabase();
     81         int num = 0;
     82         if(uriMatcher.match(uri)==CODE_USER)
     83         {
     84             num = db.delete("t_user", selection, selectionArgs);
     85         }
     86         return num;
     87     }
     88 
     89     @Override
     90     public int update(Uri uri, ContentValues values, String selection,
     91             String[] selectionArgs) {
     92         // TODO 修改数据库中的数据
     93         SQLiteDatabase db = dbHelper.getWritableDatabase();
     94         if(uriMatcher.match(uri)==CODE_USER)
     95         {
     96             return db.update("t_user", values, selection, selectionArgs);
     97         }
     98         return 0;
     99     }
    100     
    101 
    102     @Override
    103     public String getType(Uri uri) {
    104         // TODO Auto-generated method stub
    105         return null;
    106     }
    107 
    108 }
    usercontentprovider

    查询

      1 package com.qianfeng.gp08_day25_contentresolver3;
      2 
      3 import java.util.ArrayList;
      4 import java.util.HashMap;
      5 import java.util.List;
      6 import java.util.Map;
      7 
      8 import entity.Person;
      9 import android.net.Uri;
     10 import android.os.Bundle;
     11 import android.app.Activity;
     12 import android.app.AlertDialog;
     13 import android.content.ContentResolver;
     14 import android.content.ContentUris;
     15 import android.content.ContentValues;
     16 import android.content.DialogInterface;
     17 import android.content.DialogInterface.OnClickListener;
     18 import android.database.Cursor;
     19 import android.view.ContextMenu;
     20 import android.view.Menu;
     21 import android.view.MenuItem;
     22 import android.view.View;
     23 import android.view.ContextMenu.ContextMenuInfo;
     24 import android.view.View.OnCreateContextMenuListener;
     25 import android.widget.AdapterView.AdapterContextMenuInfo;
     26 import android.widget.ArrayAdapter;
     27 import android.widget.EditText;
     28 import android.widget.ListView;
     29 import android.widget.Toast;
     30 
     31 /**
     32  * 访问自定义的ContentProvider---UserContentProvider
     33  * 
     34  * @author qq
     35  * 
     36  */
     37 public class MainActivity extends Activity {
     38 
     39     private ListView listView;
     40     private List<Person> datas;
     41     private ArrayAdapter adapter;
     42 
     43     private Uri userUri = Uri
     44             .parse("content://com.qianfeng.gp08_day25_contentprovider1.users/user");
     45     private String[] columns = { "_id", "uname", "upass", "money" };
     46     private int current;
     47     private boolean isAdd;
     48     private EditText edit_name, edit_pass, edit_money;
     49     private View view;
     50     private AlertDialog editDialog, deleteDialog;
     51 
     52     @Override
     53     protected void onCreate(Bundle savedInstanceState) {
     54         super.onCreate(savedInstanceState);
     55         setContentView(R.layout.activity_main);
     56 
     57         listView = (ListView) findViewById(R.id.listView);
     58         edit_name = (EditText) findViewById(R.id.edit_name);
     59         edit_pass = (EditText) findViewById(R.id.edit_pass);
     60         edit_money = (EditText) findViewById(R.id.edit_money);
     61         datas = new ArrayList<Person>();
     62         adapter = new ArrayAdapter<Person>(this,
     63                 android.R.layout.simple_list_item_1, datas);
     64 
     65         listView.setAdapter(adapter);
     66         registerForContextMenu(listView);
     67 
     68         loadData();
     69         initDialog();
     70     }
     71 
     72     private void loadData() {
     73 
     74         Cursor cursor = getContentResolver().query(userUri, columns, null,
     75                 null, null);
     76 
     77         while (cursor.moveToNext()) {
     78             long id = cursor.getLong(0);
     79             String name = cursor.getString(1);
     80             String pass = cursor.getString(2);
     81             int money = cursor.getInt(3);
     82             Person person = new Person();
     83             person.set_id(id);
     84             person.setMoney(money);
     85             person.setUname(name);
     86             datas.add(person);
     87         }
     88         cursor.close();//-------------------------
     89         adapter.notifyDataSetChanged();
     90     }
     91 
     92     @Override
     93     public void onCreateContextMenu(ContextMenu menu, View v,
     94             ContextMenuInfo menuInfo) {
     95         getMenuInflater().inflate(R.menu.item, menu);
     96         current = ((AdapterContextMenuInfo) menuInfo).position;
     97         super.onCreateContextMenu(menu, v, menuInfo);
     98     }
     99 
    100     @Override
    101     public boolean onContextItemSelected(MenuItem item) {
    102         switch (item.getItemId()) {
    103         case R.id.action_update:
    104             isAdd = false;
    105             edit_name.setText(datas.get(current).getUname());
    106             edit_pass.setText(datas.get(current).getPass());
    107             edit_money.setText("" + datas.get(current).getMoney());
    108             editDialog.show();
    109             break;
    110         case R.id.action_delete:
    111             deleteDialog.show();
    112             break;
    113         case R.id.action_add:
    114             isAdd = true;
    115             edit_name.setText("");
    116             edit_pass.setText("");
    117             edit_money.setText("");
    118             editDialog.show();
    119             break;
    120         }
    121         return super.onContextItemSelected(item);
    122     }
    123 
    124     private void showDatas() {
    125         datas.clear();
    126         ContentResolver resolver = getContentResolver();
    127         // 先从联系人表中查询所有人的信息
    128         Cursor cursor = resolver.query(userUri, columns, null, null, null);
    129         while (cursor.moveToNext()) {
    130             long id = cursor.getLong(0);
    131             String name = cursor.getString(1);
    132             String pass = cursor.getString(2);
    133             int money = cursor.getInt(3);
    134             Person person = new Person();
    135             person.set_id(id);
    136             person.setMoney(money);
    137             person.setUname(name);
    138             person.setPass(pass);
    139             datas.add(person);
    140         }
    141         cursor.close();//----------------------
    142         adapter.notifyDataSetChanged();
    143     }
    144 
    145     public void initDialog() {
    146         view = getLayoutInflater().inflate(R.layout.dialog, null);
    147         edit_name = (EditText) view.findViewById(R.id.edit_name);
    148         edit_pass = (EditText) view.findViewById(R.id.edit_pass);
    149         edit_money = (EditText) view.findViewById(R.id.edit_money);
    150 
    151         editDialog = new AlertDialog.Builder(this).setTitle("联系人添加对话框")
    152                 .setIcon(android.R.drawable.ic_menu_add).setView(view)
    153                 .setPositiveButton("确定", new OnClickListener() {
    154                     @Override
    155                     public void onClick(DialogInterface dialog, int which) {
    156                         String name = edit_name.getText().toString();
    157                         String pass = edit_pass.getText().toString();
    158                         String money = edit_money.getText().toString();
    159 
    160                         ContentValues value = new ContentValues();
    161 
    162                         if (isAdd) {
    163                             if(!name.equals(""))
    164                             {
    165                             value.put("uname", name);
    166                             value.put("upass", pass);
    167                             value.put("money", money);
    168                             getContentResolver().insert(userUri, value);
    169                             }
    170                             else Toast.makeText(MainActivity.this, "名字不能为空", Toast.LENGTH_SHORT).show();
    171                         } else {
    172                             value.put("uname", name);
    173                             value.put("upass", pass);
    174                             value.put("money", money);
    175                             long id = datas.get(current).get_id();
    176                             getContentResolver().update(userUri, value, "_id="+id, null);
    177                         }
    178                         showDatas();
    179                     }
    180                 }).setNegativeButton("取消", null).setCancelable(false).create();
    181 
    182         deleteDialog = new AlertDialog.Builder(this).setTitle("提示")
    183                 .setMessage("确实要删除吗?")
    184                 .setIcon(android.R.drawable.ic_menu_delete)
    185                 .setPositiveButton("确定", new OnClickListener() {
    186 
    187                     @Override
    188                     public void onClick(DialogInterface dialog, int which) {
    189                         long id = datas.get(current).get_id();
    190                         getContentResolver().delete(userUri, "_id=" + id, null);
    191 
    192                         showDatas();
    193                     }
    194                 }).setNegativeButton("取消", null).setCancelable(false).create();
    195     }
    196 
    197 }
    MainActivity

    查询结果放在listView中长按有上下文菜单选择增删改访问数据库操作数据库

  • 相关阅读:
    项目中常用的19条MySQL优化技巧
    集群的session问题解决方案
    nginx实现多个域名共享80端口
    spring-boot-maven-plugin多模块install问题解决办法
    JAVA-基础(十) Swing
    JAVA-基础(六) Java.serialization 序列化
    JAVA-基础(六) Java.io
    JAVA 基础--开发环境IDEA 搭建
    JAVA-基础(五) 更多工具集
    JAVA-基础(四) Aarryas 数组
  • 原文地址:https://www.cnblogs.com/bimingcong/p/4822340.html
Copyright © 2011-2022 走看看