Java SQLiteException:编译时没有这样的列itemId:: 公共类列表SQLiteOpenHelper扩展了SQLiteOpenHelper{ 公共静态最终int版本=1; 公共静态最终字符串DB\u NAME=“lightsettings\u DB.sqlite”; 公共静态最终字符串项\u TABLE=“light\u setting\u ITEMS”; 公共静态最终字符串ITEM_ID=“itemId”; 公共静态最终字符串ITEM_TYPE=“itemType”; 公共静态最终字符串ITEM_VALUE=“itemValues”; 公共静态最终字符串项\u BUSTYPE=“itemBustype”; 公共静态最终字符串ITEM_LIGHTTYPE=“itemLighttype”; 公共静态最终字符串ITEM_SELECT=“itemSelected”; 公共列表SqliteOpenHelper(上下文){ super(上下文、数据库名称、null、版本); int i=0; int y=i; } @凌驾 public void onCreate(SQLiteDatabase db){ createTable(db); } @凌驾 public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){ } 受保护的void createTable(SQLiteDatabase db){ db.execSQL( “创建表格”+项目\表格+”(“+ ITEM_ID+“整数主键自动递增不为空,”+ 项目类型+文本+ 项目值+文本+ 项目类型+“文本,”+ 项目\u LIGHTTYPE+“文本,”+ 项目_选择+“文本”+ ");" ); } } 公共类EntryManagerApplication扩展了应用程序{ 私有ArrayList当前条目; 专用长线号=1; 专用数据库; @凌驾 public void onCreate(){ super.onCreate(); ListsSQLiteOpenHelper=新的ListsSQLiteOpenHelper(此); database=helper.getWritableDatabase(); if(currentEntries==null){ loadItems(); } } 私有void loadItems(){ currentEntries=新的ArrayList(); 游标itemscrsor=database.query( 表中的项目, 新字符串[]{ITEM_ID,ITEM_TYPE,ITEM_VALUE,ITEM_BUSTYPE,ITEM_LIGHTTYPE,ITEM_SELECT}, null,null,null,null,String.format(“%s,%s”,项选择,项类型)); itemscorsor.moveToFirst(); 条目e; 如果(!itemsCursor.isAfterLast()){ 做{ long id=itemsCursor.getLong(0); 字符串类型=itemsCursor.getString(1); 字符串值=itemsCursor.getString(2); String bustype=itemsCursor.getString(3); String lighttype=itemscrsor.getString(4); String boolvalue=itemsCursor.getString(5); 布尔选择=boolean.parseBoolean(布尔值); e=新条目(id、类型、值、bustype、lighttype); e、 setRowId(id); e、 选择(选择); 增加(e); }while(itemsursor.moveToNext()); } itemscrsor.close(); } 公共无效setCurrentEntries(ArrayList currentEntries){ this.currentEntries=currentEntries; } 公共ArrayList getCurrentEntries(){ 返回当前条目; } 公共作废补遗(条目e){ 断言(e!=null); 增加(e); } 公共长getLineNumber(){ 返回行号; } 公共无效设置行号(长行号){ this.lineNumber=行号; } }
当我试图运行这段代码时,我遇到了一个错误,我不知道,请帮助 android.database.sqlite.SQLiteException:没有这样的列:itemId:,编译时:选择itemId、itemType、itemValues、itemBustype、itemLighttype、itemSelected FROM light\u setting\u items ORDER BY itemSelected、itemTypeJava SQLiteException:编译时没有这样的列itemId:: 公共类列表SQLiteOpenHelper扩展了SQLiteOpenHelper{ 公共静态最终int版本=1; 公共静态最终字符串DB\u NAME=“lightsettings\u DB.sqlite”; 公共静态最终字符串项\u TABLE=“light\u setting\u ITEMS”; 公共静态最终字符串ITEM_ID=“itemId”; 公共静态最终字符串ITEM_TYPE=“itemType”; 公共静态最终字符串ITEM_VALUE=“itemValues”; 公共静态最终字符串项\u BUSTYPE=“itemBustype”; 公共静态最终字符串ITEM_LIGHTTYPE=“itemLighttype”; 公共静态最终字符串ITEM_SELECT=“itemSelected”; 公共列表SqliteOpenHelper(上下文){ super(上下文、数据库名称、null、版本); int i=0; int y=i; } @凌驾 public void onCreate(SQLiteDatabase db){ createTable(db); } @凌驾 public void onUpgrade(SQLiteDatabase db,int-oldVersion,int-newVersion){ } 受保护的void createTable(SQLiteDatabase db){ db.execSQL( “创建表格”+项目\表格+”(“+ ITEM_ID+“整数主键自动递增不为空,”+ 项目类型+文本+ 项目值+文本+ 项目类型+“文本,”+ 项目\u LIGHTTYPE+“文本,”+ 项目_选择+“文本”+ ");" ); } } 公共类EntryManagerApplication扩展了应用程序{ 私有ArrayList当前条目; 专用长线号=1; 专用数据库; @凌驾 public void onCreate(){ super.onCreate(); ListsSQLiteOpenHelper=新的ListsSQLiteOpenHelper(此); database=helper.getWritableDatabase(); if(currentEntries==null){ loadItems(); } } 私有void loadItems(){ currentEntries=新的ArrayList(); 游标itemscrsor=database.query( 表中的项目, 新字符串[]{ITEM_ID,ITEM_TYPE,ITEM_VALUE,ITEM_BUSTYPE,ITEM_LIGHTTYPE,ITEM_SELECT}, null,null,null,null,String.format(“%s,%s”,项选择,项类型)); itemscorsor.moveToFirst(); 条目e; 如果(!itemsCursor.isAfterLast()){ 做{ long id=itemsCursor.getLong(0); 字符串类型=itemsCursor.getString(1); 字符串值=itemsCursor.getString(2); String bustype=itemsCursor.getString(3); String lighttype=itemscrsor.getString(4); String boolvalue=itemsCursor.getString(5); 布尔选择=boolean.parseBoolean(布尔值); e=新条目(id、类型、值、bustype、lighttype); e、 setRowId(id); e、 选择(选择); 增加(e); }while(itemsursor.moveToNext()); } itemscrsor.close(); } 公共无效setCurrentEntries(ArrayList currentEntries){ this.currentEntries=currentEntries; } 公共ArrayList getCurrentEntries(){ 返回当前条目; } 公共作废补遗(条目e){ 断言(e!=null); 增加(e); } 公共长getLineNumber(){ 返回行号; } 公共无效设置行号(长行号){ this.lineNumber=行号; } },java,android,sqlite,Java,Android,Sqlite,当我试图运行这段代码时,我遇到了一个错误,我不知道,请帮助 android.database.sqlite.SQLiteException:没有这样的列:itemId:,编译时:选择itemId、itemType、itemValues、itemBustype、itemLighttype、itemSelected FROM light\u setting\u items ORDER BY itemSelected、itemType 您的CREATE TABLE命令不起作用,因为在结束)之前有一个逗
您的
CREATE TABLE
命令不起作用,因为在结束)
之前有一个逗号
此外,SQLiteOpenHelper
不会为现有数据库调用onCreate
方法;您必须增加版本
,并对onUpdate
方法进行必要的更改。
或者,删除并重新安装您的应用程序。非常感谢;我删除并重新安装了应用程序,然后它运行了
public class ListsSQLiteOpenHelper extends SQLiteOpenHelper {
public static final int VERSION = 1;
public static final String DB_NAME = "lightsettings_db.sqlite";
public static final String ITEMS_TABLE = "light_setting_items";
public static final String ITEM_ID = "itemId";
public static final String ITEM_TYPE = "itemType";
public static final String ITEM_VALUE = "itemValues";
public static final String ITEM_BUSTYPE = "itemBustype";
public static final String ITEM_LIGHTTYPE = "itemLighttype";
public static final String ITEM_SELECT = "itemSelected";
public ListsSQLiteOpenHelper(Context context) {
super(context, DB_NAME, null, VERSION);
int i=0;
int y=i;
}
@Override
public void onCreate(SQLiteDatabase db) {
createTable(db);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
}
protected void createTable(SQLiteDatabase db) {
db.execSQL(
"create table " + ITEMS_TABLE +" (" +
ITEM_ID + " integer primary key autoincrement not null, " +
ITEM_TYPE + " text," +
ITEM_VALUE + " text," +
ITEM_BUSTYPE + " text," +
ITEM_LIGHTTYPE + " text," +
ITEM_SELECT + " text" +
");"
);
}
}
public class EntryManagerApplication extends Application {
private ArrayList<Entry> currentEntries;
private long lineNumber = 1;
private SQLiteDatabase database;
@Override
public void onCreate() {
super.onCreate();
ListsSQLiteOpenHelper helper = new ListsSQLiteOpenHelper(this);
database = helper.getWritableDatabase();
if(currentEntries == null){
loadItems();
}
}
private void loadItems() {
currentEntries = new ArrayList<Entry>();
Cursor itemsCursor = database.query(
ITEMS_TABLE,
new String[] {ITEM_ID, ITEM_TYPE, ITEM_VALUE, ITEM_BUSTYPE, ITEM_LIGHTTYPE, ITEM_SELECT},
null, null, null, null, String.format("%s,%s", ITEM_SELECT, ITEM_TYPE));
itemsCursor.moveToFirst();
Entry e;
if(!itemsCursor.isAfterLast()){
do{
long id = itemsCursor.getLong(0);
String type = itemsCursor.getString(1);
String values = itemsCursor.getString(2);
String bustype = itemsCursor.getString(3);
String lighttype = itemsCursor.getString(4);
String boolvalue = itemsCursor.getString(5);
boolean select = Boolean.parseBoolean(boolvalue);
e = new Entry(id, type, values, bustype, lighttype);
e.setRowId(id);
e.setSelected(select);
currentEntries.add(e);
} while(itemsCursor.moveToNext());
}
itemsCursor.close();
}
public void setCurrentEntries(ArrayList<Entry> currentEntries){
this.currentEntries = currentEntries;
}
public ArrayList<Entry> getCurrentEntries(){
return currentEntries;
}
public void addEntry(Entry e){
assert(e!= null);
currentEntries.add(e);
}
public long getLineNumber() {
return lineNumber;
}
public void setLineNumber(long lineNumber) {
this.lineNumber = lineNumber;
}
}