在我的项目中,我使用OrmLite创建了一个名为OrderItem的表,在logcat中它成功创建了表,但是当我尝试插入记录时,它显示了一个异常。我想知道为什么会这样吗?请我的logcat。
由于
创建OrderItem后
09-12 07:30:13.075: I/TableUtils(22428): creating table 'OrderItem'
09-12 07:30:13.085: I/TableUtils(22428): executed create table statement changed 1 rows: CREATE TABLE `OrderItem` (`custom_taste` VARCHAR , `order_id` INTEGER , `name` VARCHAR , `id` INTEGER PRIMARY KEY AUTOINCREMENT , `food_id` INTEGER , `quantity` INTEGER )
在OrderItem中插入记录后,显示找不到food_id列。在上面的logcat中创建了food_id列。
09-12 07:32:00.885: E/SQLiteLog(22428): (1) table OrderItem has no column named food_id
09-12 07:32:00.905: W/System.err(22428): java.sql.SQLException: Unable to run insert stmt on object com.expresspos.mm.object.OrderItem@40ddbdd8: INSERT INTO `OrderItem` (`custom_taste` ,`order_id` ,`name` ,`food_id` ,`quantity` ) VALUES (?,?,?,?,?)
答案 0 :(得分:0)
在等待某人的回答时,我搜索了一些解决方案。此链接很有用https://groups.google.com/forum/#!topic/ormlite-android/k-i1MnaL-aQ。
这是我的解决方案,
// some set of alter table statements to tweak the schema
orderItemDao.executeRaw("ALTER TABLE `OrderItem` ADD COLUMN food_id INTEGER DEFAULT 0;");
我没想到在添加列时我需要更改OrderItem表。我必须改变表,因为我已经创建了我喜欢的数据库。
谢谢