当前位置: 首页 > 知识库问答 >
问题:

urimatcher不使用预填充的数据库

哈涵容
2023-03-14

//内容提供程序代码

private PantryDbHelper dbHelper;

private static final int PANTRY = 1;
private static final int INFO = 5;

公共静态最终字符串授权=“com.battlestarMathematica.stayfresh.pantryprovider”;

//path to db
public static final String URL = "content://" + AUTHORITY;
public static final Uri CONTENT_URI = Uri.parse(URL);
public static final Uri CONTENT_URI_PANTRY = Uri.withAppendedPath(CONTENT_URI,"pantry");
public static final Uri CONTENT_URI_INFO = Uri.withAppendedPath(CONTENT_URI,"info");

static final UriMatcher uriMatcher;

static {
    uriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
    uriMatcher.addURI(AUTHORITY,"info",INFO);
    uriMatcher.addURI(AUTHORITY, "pantry", PANTRY);
}

public Cursor query(@NonNull Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder){
    SQLiteDatabase db = dbHelper.getReadableDatabase();

    SQLiteQueryBuilder builder = new SQLiteQueryBuilder();
        switch (uriMatcher.match(uri)) {
            case PANTRY:
                builder.setTables(PantryContract.PANTRY_TABLE_NAME);
                break;
            case INFO:
                builder.setTables("info");
            default:
                throw new IllegalArgumentException("Unsupported URI " + uri);
        }

//游标加载程序代码

public Loader<Cursor> onCreateLoader(int id, Bundle args){
    return new CursorLoader(
            //context
            this,
            //content URI
            PantryContentProvider.CONTENT_URI_INFO,
            //columns to return
            new String[] {"_id","itemname"},
            //selection
            null,
            //selection args
            null,
            //sort order
            "itemname");
}

共有1个答案

禄和宜
2023-03-14

您的代码中只是缺少一个break语句。

urimatcher匹配,switch语句跳转到case info:,但由于没有中断;也执行default:大小写。

尝试替换这个

        case INFO:
            builder.setTables("info");
        default:
            throw new IllegalArgumentException("Unsupported URI " + uri);
        case INFO:
            builder.setTables("info");
            break;
        default:
            throw new IllegalArgumentException("Unsupported URI " + uri);
 类似资料:
  • 问题内容: 我正在尝试使用我的Derby数据库数据填充Netbeans GUI-builder jTable。 我在Account.java类中使用以下代码: 理想情况下,我希望能够返回其中包含参数数据和列的tableModel,因为我知道在GUI中执行此方法是一种不好的做法。在线上的所有教程都没有显示如何将数据发送到另一个类,它们只是在GUI类中执行数据库代码。 我有一个错误,它看不到数据和列,

  • 我在Account.java类中使用以下代码: 理想情况下,我希望能够返回包含参数数据和列的tableModel,因为我知道在我的GUI中使用这种方法是不好的做法。所有在线教程都没有显示如何将数据发送到另一个类,它们只是在GUI类中执行数据库代码。 我有一个错误,它无法看到数据和列,因为它们是在我的方法的一个不可访问的部分中声明和使用的。在我完成这些之后,我需要找到一种方法来将它传递给我的GUI类

  • 问题内容: 我正在尝试使用来自Web服务的数据填充jqGrid。我已经仔细研究了jqGrid代码和文档。我需要另一双眼睛看下面的代码,并告诉我是否缺少某些内容。 正如您将在代码中看到的那样,我将网格设置为在页面加载时或刷新期间加载。加载网格后,我再次调用Ajax以获取JSON数据并显示在网格下方的div中。 我看到了大多数预期的行为。页面加载后,网格显示加载指示器,然后启动Ajax调用,并且JSO

  • 我有一个基于类的视图(IndexView at views.py),它显示了一个包含数据库中存储的所有数据的表。此视图在索引中呈现。html使用获取所有数据。还没有问题。 对我来说,困难的部分是尝试使用表单来完成它,以便能够修改和保存金额列。我对POST部分没有问题,我使用AJAX来保存新值。我遇到的问题是从数据库中获取初始值以填充Django表单(forms.py) 我尝试在表单字段的定义中使用

  • 我习惯于使用Arraylist,下面您可以看到我为存储数据所做的尝试: 这就是我尝试过的,但遗憾的是,这并不奏效: 下面你可以找到我剩下的代码,但上面的一个应该足以让我清楚的想要做什么... } 我创建了Dao类,如下所示::- @DAO公共接口DeckBuilderDao{

  • 问题内容: 我对Flask框架相当陌生,并且正在为Webportal创建编辑配置文件页面。我被困在某个位置,无法自动填写表格。 这是我的表格课: 这是我评估表格的功能。 而我的html表单模板是: 我有一个用户类的对象。然后我要从该对象中预填此表单。如何预填充表单中的值。我正在尝试在此处实现编辑配置文件功能。 问题答案: 创建对象时,需要将其传递给表单。 你将遇到一些麻烦 它创建EditProfi