I'm getting an error in an SQL statement per below. The method causing the error is looking for a row with "Anniversary" in the column "name" from the table indicated below. If none such row is found, it will add a row. The error seems to be indicating that the table has no column "Anniversary" but I'm not trying to query a column Anniversary, but I am trying to query the column "name." Totally confused. Any help is appreciated. Sorry for all the code, but it all seems relevant, so I tried to break it down into parts.
I'm getting the following error in run time:
Caused by: android.database.sqlite.SQLiteException: no such column: Anniversary (code 1): , while compiling: SELECT * FROM special_days WHERE name = Anniversary
at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:919)
at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:530)
at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:47)
at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1379)
at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1226)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1097)
at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1265)
at com.mycompany.dudesmyreminders.dbDataSource.queryToList(dbDataSource.java:147)
at com.mycompany.dudesmyreminders.Significant_OtherActivity.populateAnniv(Significant_OtherActivity.java:140)
...
The method causing the error:
public void populateAnniv() {
List<dbData> tempDBDatas;
tempDBDatas = datasource.queryToList(dbSDTable,null,
dbSDColumnName + " = " + dbSDFieldAnniv,
null,null,null,null);
if (tempDBDatas.size() > 0) {
dbDataAnniv = tempDBDatas.get(0);
} else {
dbDataAnniv = datasource.add_Row(dbSDFieldAnniv, dbSDTable, dbSDColumnName);
datasource.set_ColumnVal(dbDataAnniv, dbSDColumnDate, "10 29 1929");
datasource.set_ColumnVal(dbDataAnniv, dbSDColumnWarn, 10);
}
TextView textViewAnniv = ( TextView ) findViewById( R.id.SignificantOther_selectAnni);
textViewAnniv.setText(datasource.get_Column_StrVal(dbDataAnniv, dbSDColumnDate));
}
public List<dbData> queryToList(String myTable, String[] myColumns, String whereClause,
String[] whereArgs, String groupBy, String having, String orberBy) {
System.out.println("start queryToList");
List<dbData> dbDatas = new ArrayList<>();
Cursor cursor = database.query(myTable, myColumns,
whereClause, whereArgs, groupBy, having, orberBy);
System.out.println("cursor count = " + cursor.getCount());
cursor.moveToFirst();
while (!cursor.isAfterLast()) {
dbData dbData = cursorToDB_Row(cursor, myTable);
dbData.setIntTemp1(0);
dbDatas.add(dbData);
cursor.moveToNext();
}
// make sure to close the cursor
cursor.close();
return dbDatas;
}
The variables used by the method:
private String dbSOTable = MySQLiteHelper.dbFields.TABLE_NAME_SIGNIFICANT_OTHER;
private String dbSOColumnName = MySQLiteHelper.dbFields.COLUMN_SIGNIFICANT_OTHER_NAME;
private String dbSDTable = MySQLiteHelper.dbFields.TABLE_NAME_SPECIAL_DAYS;
private String dbSDColumnName = MySQLiteHelper.dbFields.COLUMN_SPECIAL_DAYS_NAME;
private String dbSDFieldAnniv = MySQLiteHelper.dbFields.FIELD_SPECIAL_DAY_RESERVED_ANNIVERSARY;
private String dbSDFieldBirth = MySQLiteHelper.dbFields.FIELD_SPECIAL_DAY_RESERVED_BIRTHDAY;
private String dbSDColumnDate = MySQLiteHelper.dbFields.COLUMN_SPECIAL_DAYS_DATE;
private String dbSDColumnWarn = MySQLiteHelper.dbFields.COLUMN_SPECIAL_DAYS_WARNING;
From SQLiteHelper:
/* Inner class that defines the table contents */
public static abstract class dbFields implements BaseColumns {
//Special_Days Table Fields
public static final String TABLE_NAME_SPECIAL_DAYS = "special_days";
public static final String COLUMN_SPECIAL_DAYS_ID = _ID;
public static final String COLUMN_SPECIAL_DAYS_DATE = "date"; //dbDataRow strField 1
public static final String COLUMN_SPECIAL_DAYS_NAME = "name"; //dbDataRow dbData
public static final String COLUMN_SPECIAL_DAYS_ALTITUDE = "altitude"; //dbDataRow intField 1
public static final String COLUMN_SPECIAL_DAYS_USED = "is_used"; //dbDataRow Field 2
public static final String COLUMN_SPECIAL_DAYS_WARNING = "warning"; //dbDataRow intField 3
public static final String COLUMN_SPECIAL_DAYS_ACTION = "action"; //dbDataRow intField 4
}
//Database creation sql statement
private static final String SQL_CREATE_SPECIAL_DAYS =
"CREATE TABLE " + dbFields.TABLE_NAME_SPECIAL_DAYS + " (" +
dbFields.COLUMN_SPECIAL_DAYS_ID + INTEGER_PRIMARY_KEY + COMMA_SEP +
dbFields.COLUMN_SPECIAL_DAYS_NAME + TEXT_TYPE + COMMA_SEP +
dbFields.COLUMN_SPECIAL_DAYS_DATE + TEXT_TYPE + COMMA_SEP +
dbFields.COLUMN_SPECIAL_DAYS_ALTITUDE + INTEGER_TYPE + COMMA_SEP +
dbFields.COLUMN_SPECIAL_DAYS_USED + INTEGER_TYPE + COMMA_SEP +
dbFields.COLUMN_SPECIAL_DAYS_WARNING + INTEGER_TYPE + COMMA_SEP +
dbFields.COLUMN_SPECIAL_DAYS_ACTION + INTEGER_TYPE +
// Any other options for the CREATE command
" )";
Aucun commentaire:
Enregistrer un commentaire