【问题标题】:Android - Contract and Provider JOIN interactionAndroid - Contract 和 Provider JOIN 交互
【发布时间】:2014-10-30 03:48:29
【问题描述】:

我只是想了解我在 Udacity Android 课程中的代码发生了什么。

当我使用一种类型的 URI 时,JOIN 语句有效,但如果我使用另一种类型的 URI,则 JOIN 不起作用,我不明白为什么。

1-) 当我加入时它可以工作:

String sortOrder = WeatherContract.WeatherEntry.COLUMN_DATETEXT + " ASC";
    mLocation = settings.getLocation();
    Uri weatherForLocationUri = WeatherContract.WeatherEntry.buildWeatherLocationWithDate(
            mLocation, DATE_KEY);
    Log.e("URI_REQUISITE", weatherForLocationUri.toString());

    return new CursorLoader(
            getActivity(),
            weatherForLocationUri,
            new String[] {
                WeatherContract.WeatherEntry.COLUMN_SHORT_DESC,
                WeatherContract.WeatherEntry.COLUMN_MAX_TEMP,
                WeatherContract.WeatherEntry.COLUMN_MIN_TEMP,
                WeatherContract.WeatherEntry.COLUMN_HUMIDITY,
                WeatherContract.WeatherEntry.COLUMN_WIND_SPEED,
                WeatherContract.WeatherEntry.COLUMN_WEATHER_ID,
                WeatherContract.WeatherEntry.COLUMN_PRESSURE,
                WeatherContract.WeatherEntry.COLUMN_DEGREES,
                WeatherContract.LocationEntry.COLUMN_LOCATION_SETTINGS // <- this row is the problem
                //^ this row is the problem
            },
            null,
            null,
            sortOrder
    );

2-) 当我加入时它不起作用:

String sortOrder = WeatherContract.WeatherEntry.COLUMN_DATETEXT + " ASC";
    return new CursorLoader(
            getActivity(),
            WeatherContract.LocationEntry.CONTENT_URI,
            new String[] {
                WeatherContract.WeatherEntry.COLUMN_SHORT_DESC,
                WeatherContract.WeatherEntry.COLUMN_MAX_TEMP,
                WeatherContract.WeatherEntry.COLUMN_MIN_TEMP,
                WeatherContract.WeatherEntry.COLUMN_HUMIDITY,
                WeatherContract.WeatherEntry.COLUMN_WIND_SPEED,
                WeatherContract.WeatherEntry.COLUMN_WEATHER_ID,
                WeatherContract.WeatherEntry.COLUMN_PRESSURE,
                WeatherContract.WeatherEntry.COLUMN_DEGREES,
                WeatherContract.LocationEntry.COLUMN_LOCATION_SETTINGS // <- this row is the problem
                //^ this row is the problem
            },
            WeatherEntry.COLUMN_DATETEXT+" = ?",
            new String []{DATE_KEY},
            sortOrder
    );

您可以看到在第二个示例中找不到WeatherContract.LocationEntry.COLUMN_LOCATION_SETTING,我的应用程序崩溃了!

为什么在第一个示例中找到 WeatherContract.LocationEntry.COLUMN_LOCATION_SETTING 而在第二个示例中却没有?

为方便起见,这是我的 WeatherContract 和 WeatherProvider:

WeatherContract

WeatherProvider

【问题讨论】:

    标签: java android join android-contentprovider


    【解决方案1】:

    客观地说,这就是我的问题的答案。

    SQLiteQueryBuilder -> setTables -> http://developer.android.com/reference/android/database/sqlite/SQLiteQueryBuilder.html#setTables%28java.lang.String%29

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-12-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多