我正在尝试在数据库中插入数据,但这给了我以下错误。
表位置没有名为PLACE_NAME(代码1)的列:,正在编译:INSERT INTO place(PLACE_NAME,IS_SELECTED,placeID,LONGITUDE,LATITUDE)值(?,?,?,?,?)
这是我创建数据库表的方式
// Create a table to hold the places data
final String SQL_CREATE_PLACES_TABLE = "CREATE TABLE IF NOT EXISTS " + PlaceContract.PlaceEntry.TABLE_NAME + " (" +
PlaceContract.PlaceEntry._ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + PlaceContract.PlaceEntry.COLUMN_PLACE_NAME + " VARCHAR, " +
PlaceContract.PlaceEntry.COLUMN_PLACE_LATITUDE + " VARCHAR, " + PlaceContract.PlaceEntry.COLUMN_PLACE_LONGITUDE + " VARCHAR, "+
PlaceContract.PlaceEntry.COLUMN_PLACE_IS_SELECTED + " VARCHAR, " +
PlaceContract.PlaceEntry.COLUMN_PLACE_ID + " TEXT NOT NULL, " +
"UNIQUE (" + PlaceContract.PlaceEntry.COLUMN_PLACE_ID + ") ON CONFLICT REPLACE" +
"); ";
请帮助我我做错了....
答案 0 :(得分:2)
找不到列的最常见原因是键入错误和对 onCreate 方法的误解。
如果您始终使用单一来源的列名,则前者不太可能,例如如果您使用PlaceContract.PlaceEntry.COLUMN_PLACE_NAME
来引用place_name列。
对于后者,onCreate方法仅在创建数据库时自动运行,对模式所做的任何更改(例如添加列)都不会应用。因此,如果您更改了CREATE SQL字符串以添加PLACE_NAME列,则不会添加该列。
在开发App时,当数据可能丢失时,可以通过三种快速方法来纠正这种情况。
如果不能丢失数据库中的数据,则替代方法是使用ALTER添加列或创建另一个表,从原始表中复制数据,然后删除原始表并使用ALTER重命名新表将成为原始表。