写点什么

【Java 转 Android】33,高级 Android 开发面试解答之线程篇

用户头像
Android架构
关注
发布于: 刚刚

public Uri insert(Uri uri, ContentValues values) {


// 添加数据


SQLiteDatabase db = dbHelpe


《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》
浏览器打开:qq.cn.hn/FTe 免费领取
复制代码


r.getWritableDatabase();


Uri uriReturn = null;


switch (uriMatcher.match(uri)) {


case BOOK_DIR:


case BOOK_ITEM:


long newBookId = db.insert("Book", null, values);


uriReturn = Uri.parse("content://" + AUTHORITY + "/book/" + newBookId);


break;


case CATEGORY_DIR:


case CATEGORY_ITEM:


long newCategoryId = db.insert("Category", null, values);


uriReturn = Uri.parse("content://" + AUTHORITY + "/category/" + newCategoryId);


break;


default:


break;


}


return uriReturn;


}


@Override


public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) {


// 更新数据


SQLiteDatabase db = dbHelper.getWritableDatabase();


int updatedRows = 0;


switch (uriMatcher.match(uri)) {


case BOOK_DIR:


updatedRows = db.update("Book", values, selection, selectionArgs);


break;


case BOOK_ITEM:


String bookId = uri.getPathSegments().get(1);


updatedRows = db.update("Book", values, "id = ?", new String[] { bookId });


break;


case CATEGORY_DIR:


updatedRows = db.update("Category", values, selection, selectionArgs);


break;


case CATEGORY_ITEM:


String categoryId = uri.getPathSegments().get(1);


updatedRows = db.update("Category", values, "id = ?", new String[] { categoryId });


break;


default:


break;


}


return updatedRows;


}


@Override


public int delete(Uri uri, String selection, String[] selectionArgs) {


// 删除数据


SQLiteDatabase db = dbHelper.getWritableDatabase();


int deletedRows = 0;


switch (uriMatcher.match(uri)) {


case BOOK_DIR:


deletedRows = db.delete("Book", selection, selectionArgs);


break;


case BOOK_ITEM:


String bookId = uri.getPathSegments().get(1);


deletedRows = db.delete("Book", "id = ?", new String[] { bookId });


break;


case CATEGORY_DIR:


deletedRows = db.delete("Category", selection, selectionArgs);


break;


case CATEGORY_ITEM:


String categoryId = uri.getPathSegments().get(1);


deletedRows = db.delete("Category", "id = ?", new String[] { categoryId });


break;


default:


break;


}


return deletedRows;


}


@Override


public String getType(Uri uri) {


switch (uriMatcher.match(uri)) {


case BOOK_DIR:


return "vnd.android.cursor.dir/vnd.com.example.databasetest. provider.book";


case BOOK_ITEM:


return "vnd.android.cursor.item/vnd.com.example.databasetest. provider.book";


case CATEGORY_DIR:


return "vnd.android.cursor.dir/vnd.com.example.databasetest. provider.category";


case CATEGORY_ITEM:


return "vnd.android.cursor.item/vnd.com.example.databasetest. provider.category";


}


return null;


}


}


public class MyDatabaseHelper extends SQLiteOpenHelper {


public static final String CREATE_BOOK = "create table Book ("


  • "id integer primary key autoincrement, "

  • "author text, "

  • "price real, "

  • "pages integer, "

  • "name text)";


public static final String CREATE_CATEGORY = "create table Category ("


  • "id integer primary key autoincrement, "

  • "category_name text, "

  • "category_code integer)";


private Context mContext;


public MyDatabaseHelper(Context context, String name,


SQLiteDatabase.CursorFactory factory, int version) {


super(context, name, factory, version);


mContext = context;


}


@Override


public void onCreate(SQLiteDatabase db) {


db.execSQL(CREATE_BOOK);


db.execSQL(CREATE_CATEGORY);


// Toast.makeText(mContext, "Create succeeded", Toast.LENGTH_SHORT).show();


}


@Override


public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {


db.execSQL("drop table if exists Book");


db.execSQL("drop table if exists Category");


onCreate(db);


}


}


<?xml version="1.0" encoding="utf-8"?>


<manifest xmlns:android="http://schemas.android.com/apk/res/android"


package="com.example.databasetest">


<application


android:allowBackup="true"


android:icon="@mipmap/ic_launcher"


android:label="@string/app_name"


android:supportsRtl="true"


android:theme="@style/AppTheme">


<activity android:name=".MainActivity">


<intent-filter>


<action android:name="android.intent.action.MAIN" />


<category android:name="android.intent.category.LAUNCHER" />


</intent-filter>


</activity>


<provider


android:name=".DatabaseProvider"


android:authorities="com.example.databasetest.provider"


android:enabled="true"


android:exported="true" />


</application>


</manifest>


Provider 项目,访问 Database 项目的数据


public class MainActivity extends AppCompatActivity {


private String newId;


@Override


protected void onCreate(Bundle savedInstanceState) {


super.onCreate(savedInstanceState);


setContentView(R.layout.activity_main);


Button addData = (Button) findViewById(R.id.add_data);


addData.setOnClickListener(new View.OnClickListener() {


@Override


public void onClick(View v) {


// 添加数据


Uri uri = Uri.parse("content://com.example.databasetest.provider/book");

用户头像

Android架构

关注

还未添加个人签名 2021.10.31 加入

还未添加个人简介

评论

发布
暂无评论
【Java转Android】33,高级Android开发面试解答之线程篇