3.四大组件之内容提供者ContentProvider 之前的数据库复习
ContentProvider主要用于在不同的应用程序之间实现数据共享的功能,它提供一套完整的机制,允许一个程序访问另一个程序中的数据,同时还保证被访问数据的安全性。目前,使用ContentProvider是Android实现跨程序共享数据的标准方式。
项目结构如下:

User.class
package com.example.mycontentprovider.pojo; public class User { private int id; private String userName; private String password; private String sex; private int age; public User() { } public User(int id, String userName, String password, String sex, int age) { this.id = id; this.userName = userName; this.password = password; this.sex = sex; this.age = age; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "User{" + "id=" + id + ", userName='" + userName + '\'' + ", password='" + password + '\'' + ", sex='" + sex + '\'' + ", age=" + age + '}'; } }
Constants.class
package com.example.mycontentprovider.utils; public class Constants { public static final String DB_NAME = "provider.db"; public static final String FILED_ID = "_id"; public static final int DB_VERSION = 1; public static final String DB_TABLE_NAME = "user"; }
UserDataBaseHelper.class
package com.example.mycontentprovider.db; import android.content.Context; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteOpenHelper; import android.util.Log; import androidx.annotation.Nullable; import com.example.mycontentprovider.utils.Constants; public class UserDataBaseHelper extends SQLiteOpenHelper { //String name是數據庫名,沒有這個數據庫的話就會創建 public UserDataBaseHelper(@Nullable Context context, @Nullable String name, @Nullable SQLiteDatabase.CursorFactory factory, int version) { super(context, name, factory, version); } @Override public void onCreate(SQLiteDatabase sqLiteDatabase) { Log.e("創建數據庫: ","**************************************************"); //建表 String createSql = "create table "+ Constants.DB_TABLE_NAME + "(" + Constants.FILED_ID + " integer primary key autoincrement,userName varchar(30),password varchar(30),sex varchar(3),age integer)"; sqLiteDatabase.execSQL(createSql); Log.e("創建數據庫表: ","**************************************************"); } @Override public void onUpgrade(SQLiteDatabase sqLiteDatabase, int olderVersion, int newVersion) { } }
IUserDao.interface
package com.example.mycontentprovider.dao; import com.example.mycontentprovider.pojo.User; import java.util.List; public interface IUserDao { //添加用戶 int addUser(User user); //刪除用戶 int delUserByid(int id); //更新用戶 int updateUser(User user); //得到用戶 User getUserById(int id); //查詢所有用戶 List<User> allUser(); }
UserDaoImpl.class
package com.example.mycontentprovider.dao; import android.annotation.SuppressLint; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.util.Log; import com.example.mycontentprovider.db.UserDataBaseHelper; import com.example.mycontentprovider.pojo.User; import com.example.mycontentprovider.utils.Constants; import java.util.List; public class UserDaoImpl implements IUserDao{ UserDataBaseHelper helper; public UserDaoImpl(Context context) { //创建数据库以及建表 helper = new UserDataBaseHelper(context,Constants.DB_NAME,null,Constants.DB_VERSION); } @Override public int addUser(User user) { SQLiteDatabase writableDatabase = helper.getWritableDatabase(); ContentValues values = new ContentValues(); values.put("userName",user.getUserName()); values.put("sex",user.getSex()); values.put("password",user.getPassword()); values.put("age",user.getAge()); writableDatabase.insert(Constants.DB_TABLE_NAME,null,values); writableDatabase.close(); return 0; } @Override public int delUserByid(int id) { SQLiteDatabase writableDatabase = helper.getWritableDatabase(); int deleteResult = writableDatabase.delete(Constants.DB_TABLE_NAME, Constants.FILED_ID + "= ?", new String[]{id + ""}); writableDatabase.close(); return deleteResult; } @Override public int updateUser(User user) { SQLiteDatabase writableDatabase = helper.getWritableDatabase(); //根据id更新内容 ContentValues values = new ContentValues(); values.put("userName",user.getUserName()); values.put("sex",user.getSex()); values.put("password",user.getPassword()); values.put("age",user.getAge()); int result = writableDatabase.update(Constants.DB_TABLE_NAME, values, Constants.FILED_ID + "= ?", new String[]{String.valueOf(user.getId())}); writableDatabase.close(); return result; } @SuppressLint("Range") @Override public User getUserById(int id) { SQLiteDatabase writableDatabase = helper.getWritableDatabase(); String sql = "select * from "+Constants.DB_TABLE_NAME+" where " + Constants.FILED_ID + " = ?"; Cursor cursor = writableDatabase.rawQuery(sql, new String[]{id + ""}); User user = null; while (cursor.moveToNext()) { user = new User(); user.setId(id); //取姓名那一列 String userName = cursor.getString(cursor.getColumnIndex("userName")); user.setUserName(userName); //取性别那一列 String sex = cursor.getString(cursor.getColumnIndex("sex")); user.setSex(sex); //取密码那一列 String password = cursor.getString(cursor.getColumnIndex("password")); user.setSex(password); //取年龄那一列 int age = cursor.getInt(cursor.getColumnIndex("age")); user.setAge(age); } writableDatabase.close(); return user; } @Override public List<User> allUser() { SQLiteDatabase writableDatabase = helper.getWritableDatabase(); Cursor cursor = writableDatabase.query(Constants.DB_TABLE_NAME, null, null, null, null, null, null); while (cursor.moveToNext()) { int anInt = cursor.getInt(0); String name = cursor.getString(1); Log.e("id: ", String.valueOf(anInt)); Log.e("name: ", String.valueOf(name)); } return null; } }
MainActivity.class
package com.example.mycontentprovider; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import com.example.mycontentprovider.dao.UserDaoImpl; import com.example.mycontentprovider.pojo.User; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //创建数据库以及建表 UserDaoImpl userDao = new UserDaoImpl(this); //添加用户 //userDao.addUser(new User(1,"zouhao","1223","男",250)); //userDao.addUser(new User(2,"zouhao2","12234","男",2501)); //跟新数据库数据 userDao.updateUser(new User(2,"libai","3245","女",43)); //获取全部用户 userDao.allUser(); //根据id查询用户 User userById = userDao.getUserById(6); Log.e("getUserByID", String.valueOf(userById)); } }

浙公网安备 33010602011771号