Java 查询返回空游标
所以我试图在数据库中显示内容,但显然光标等于null。我的查询有什么问题吗 我的数据库有三列(ID、名称、日期)。活动上应显示名称和日期。 我向您提供了ContentProvider的代码和我的合同。如果你看到任何错误,请告诉我 内容提供者Java 查询返回空游标,java,android,sqlite,Java,Android,Sqlite,所以我试图在数据库中显示内容,但显然光标等于null。我的查询有什么问题吗 我的数据库有三列(ID、名称、日期)。活动上应显示名称和日期。 我向您提供了ContentProvider的代码和我的合同。如果你看到任何错误,请告诉我 内容提供者 public class EventProvider extends ContentProvider { private static final int EVENTS = 100; private static final int EVENT_ID =
public class EventProvider extends ContentProvider {
private static final int EVENTS = 100;
private static final int EVENT_ID = 101;
private static final UriMatcher sUriMatcher = new UriMatcher(UriMatcher.NO_MATCH);
static {
sUriMatcher.addURI(EventContract.CONTENT_AUTHORITY, EventContract.PATH_EVENTS, EVENTS);
sUriMatcher.addURI(EventContract.CONTENT_AUTHORITY, EventContract.PATH_EVENTS + "/#", EVENT_ID);
}
public static final String LOG_TAG = EventProvider.class.getSimpleName();
private EventDbHelper mDbHelper = new EventDbHelper(getContext());
@Override
public boolean onCreate() {
mDbHelper = new EventDbHelper(getContext());
return true;
}
@Override
public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) {
SQLiteDatabase database = mDbHelper.getReadableDatabase();
// This cursor will hold the result of the query
Cursor cursor;
// Figure out if the URI matcher can match the URI to a specific code
int match = sUriMatcher.match(uri);
switch (match) {
case EVENTS:
cursor = database.query(EventEntry.TABLE_NAME, projection, selection, selectionArgs, null, null, sortOrder);
break;
case EVENT_ID:
selection = EventEntry._ID + "=?";
selectionArgs = new String[]{String.valueOf(ContentUris.parseId(uri))};
cursor = database.query(EventEntry.TABLE_NAME, projection, selection, selectionArgs,
null, null, sortOrder);
break;
default:
throw new IllegalArgumentException("Cannot query unknown URI " + uri);
}
cursor.setNotificationUri(getContext().getContentResolver(), uri);
return cursor;
}
合同
public final class EventContract {
private EventContract (){}
public static final String CONTENT_AUTHORITY = "com.example.deadline";
public static final String PATH_EVENTS = "events";
public static final Uri BASE_CONTENT_URI = Uri.parse("context://" + CONTENT_AUTHORITY);
public static final class EventEntry implements BaseColumns{
public static final Uri CONTENT_URI = Uri.withAppendedPath(BASE_CONTENT_URI, PATH_EVENTS);
public static final String CONTENT_LIST_TYPE = ContentResolver.CURSOR_DIR_BASE_TYPE + "/" + CONTENT_AUTHORITY
+ "/" + PATH_EVENTS;
public final static String TABLE_NAME = "events";
public final static String _ID = BaseColumns._ID;
public final static String COLUMN_EVENT_NAME = "name";
public final static String COLUMN_EVENT_DATE = "date";
public final static String TABLE_SORT_BY = "name ASC";
}
}空的
光标
和null是不同的东西。也就是说,您没有在ContentProvider
中显示insert()
方法。您是如何将内容放入数据库的?你确定里面有什么东西要归还吗?我手动查看了数据。所以数据库中肯定有数据。空的游标和空的是不同的。也就是说,您没有在ContentProvider
中显示insert()
方法。您是如何将内容放入数据库的?你确定里面有什么东西要归还吗?我手动查看了数据。所以数据库中肯定有数据。