thank you for reading and helping :)
I am using ActiveAndroid 3.0 - Android 2.2 - In my app I have a model called "user". initially I only created the model with (id, name, passcode) columns/attributes, I ran the app on the emulator, and it worked.
@Table(name = "user")
public class User extends Model {
@Column (name = "name")
public String name;
@Column (name = "pass_code")
public String passCode;
}
Then I added a new column/attribute - profileImage. I ran the app on the emulator and i got SQLite column profileImage does not exist error.
@Table(name = "user")
public class User extends Model {
@Column (name = "name")
public String name;
@Column (name = "pass_code")
public String passCode;
@Column (name = "profile_image")
public String profileImage;
}
I have tried changing the ActiveAndroid db name and updating the db version properties in the manifest file.
<meta-data android:name="AA_DB_NAME" android:value="my_app.db" />
<meta-data android:name="AA_DB_VERSION" android:value="2" />
But I keep getting the column does not exist error.
ERROR AndroidRuntime Caused by: android.database.sqlite.SQLiteException:
no such column: profile_image: , while compiling: SELECT * FROM user WHERE profile_image = ?
I have also tried, un-installing the app from emulator, restarting the emulator, calling ActiveAndroid.cacheClear(). So far none of this worked.
I really appreciate any help. thanks.
UPDATE table SET col = new_value WHERE col = old_value AND other_col = some_other_value; UPDATE table SET col = new_value WHERE col = old_value OR other_col = some_other_value; As you can see, you can expand the WHERE clause as much as you'd like in order to filter down the rows for updating to what you need.
In such a case, you can use the following UPDATE statement syntax to update column from one table, based on value of another table. UPDATE first_table, second_table SET first_table. column1 = second_table. column2 WHERE first_table.id = second_table.
Active Android last updated two years ago, and Realm is a living project. Active Android is just wrapper around SQLite database. Realm offers more features like auto-refreshing query results, creation of objects from JSON, or database change notifications.
From the sounds of it, you're missing the upgrade script to migrate your user
table to the new schema. The upgrade scripts basically contains the instructions on how to get from the old state of the database to the new one. In your specific case, you'll want to tell SQLite that it should add a new column, profile_image
, to the existing user table.
To upgrade your database from schema 1 to 2, bump up the AA_DB_VERSION
value to 2
and give the upgrade script the name 2.sql
. Save the file under assets/migrations
and give it the following content:
ALTER TABLE user ADD profile_image TEXT;
The scripts may contains any set of SQL statements that can be executed by the SQLiteDatabase
through execSQL(...)
.
More details on schema migrations with Active Android can be found in the wiki on the GitHub project page.
The "TEXT
" label is changed to "VARCHAR
" for database migration using ActiveAndroid
All other Reserved words were highlighted except for "TEXT
". I used "VARCHAR
" and it worked.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With