Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android中找不到列项\u名称_Android_Sqlite_Exception - Fatal编程技术网

在android中找不到列项\u名称

在android中找不到列项\u名称,android,sqlite,exception,Android,Sqlite,Exception,有人有答案吗 my database helper类中的代码: public void onCreate(SQLiteDatabase db) { db.execSQL(DATABASE_CREATE); db.execSQL(CREATE_ITEM_DB); } public static final String ITEM_NAME = "item_name"; public static final String ITEM_STATUS = "item_status

有人有答案吗

my database helper类中的代码:

   public void onCreate(SQLiteDatabase db) {
    db.execSQL(DATABASE_CREATE);
    db.execSQL(CREATE_ITEM_DB);
}

public static final String ITEM_NAME = "item_name";
public static final String ITEM_STATUS = "item_status";
public static final String ITEM_DESCRIPTION = "item_description";
public static final String ITEM_CATEGORY = "item_category";
public static final String ITEM_ROW_ID = "row_id";
private static final String ITEM_TABLE = "table_of_items";

   public static final String CREATE_ITEM_DB = "CREATE TABLE "
          + ITEM_TABLE + "(" + ITEM_ROW_ID + 
         " INTEGER PRIMARY KEY AUTOINCREMENT," + ITEM_NAME
          + " TEXT NOT NULL," + ITEM_STATUS + " TEXT NOT NULL," + ITEM_DESCRIPTION + " TEXT," + ITEM_CATEGORY + " TEXT NOT NULL," +
          KEY_NAME + " TEXT);";
现在,在另一个课堂上,我称之为:

  public void list(){
myModel.open();
current_user = myModel.getCurUser();
Item [] items = (myModel.getLostItems(current_user));
if(items != null){
    myView.setItem(items);
}

myModel.close();
}

myModel是my数据库类。它包含数据库助手类和sqlite数据库的实例。此外,myModel.open()还获取一个可写数据库

错误消息非常清楚:item_name不是列

但看起来确实如此

编辑:玩过之后,我决定这不是关于这个专栏的。似乎我在columns数组中放在第一位的任何列都会产生相同的错误消息

编辑2:这是我的getLostItems:

     public Item[] getLostItems(String current_user) {
    String [] columns = new String [] {DB_Helper.ITEM_NAME,
            DB_Helper.ITEM_STATUS,
            DB_Helper.ITEM_DESCRIPTION,
            DB_Helper.ITEM_CATEGORY,
            DB_Helper.ITEM_ROW_ID,
            DB_Helper.KEY_NAME};
    Cursor c = database.query(DB_Helper.DATABASE_TABLE_USERS, columns, DB_Helper.KEY_NAME + " = ? AND " + DB_Helper.ITEM_STATUS + " = ?",
             new String[] {current_user, "lost"},
             null,
             null,
             null);
从技术上讲,还有一点代码,但是在使用调试器遍历代码之后,它在查询语句中失败

日志:

03-02 16:44:56.375:E/SQLiteLog(16362):(1)没有这样的列:项目名称
03-02 16:44:56.375:D/AndroidRuntime(16362):关闭虚拟机
03-02 06:47:46.825:E/AndroidRuntime(6760):致命异常:主
03-02 06:47:46.825:E/AndroidRuntime(6760):java.lang.RuntimeException:无法启动活动组件信息{com.example.wheresmystuff/com.example.wheresmystuff.View.DisplayItems}:android.database.sqlite.SQLiteException:没有这样的列:项目名称(代码1):,编译时:选择项目名称、项目状态、项目描述、项目类别、行id,来自reg_users_表的id_名称,其中id_名称=?和项目_状态=?
03-02 06:47:46.825:E/AndroidRuntime(6760):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)上
03-02 06:47:46.825:E/AndroidRuntime(6760):在android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
03-02 06:47:46.825:E/AndroidRuntime(6760):在android.app.ActivityThread.access$600(ActivityThread.java:141)
03-02 06:47:46.825:E/AndroidRuntime(6760):在android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
03-02 06:47:46.825:E/AndroidRuntime(6760):位于android.os.Handler.dispatchMessage(Handler.java:99)
03-02 06:47:46.825:E/AndroidRuntime(6760):在android.os.Looper.loop(Looper.java:137)上
03-02 06:47:46.825:E/AndroidRuntime(6760):位于android.app.ActivityThread.main(ActivityThread.java:5041)
03-02 06:47:46.825:E/AndroidRuntime(6760):位于java.lang.reflect.Method.Invokenactive(本机方法)
03-02 06:47:46.825:E/AndroidRuntime(6760):位于java.lang.reflect.Method.invoke(Method.java:511)
03-02 06:47:46.825:E/AndroidRuntime(6760):在com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
03-02 06:47:46.825:E/AndroidRuntime(6760):位于com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
03-02 06:47:46.825:E/AndroidRuntime(6760):在dalvik.system.NativeStart.main(本机方法)
03-02 06:47:46.825:E/AndroidRuntime(6760):原因:android.database.sqlite.SQLiteException:没有这样的列:item_name(代码1):,编译时:从注册表中选择item_name、item_status、item_description、item_category、row_id、id_name,其中id_name=?和项目_状态=?
03-02 06:47:46.825:E/AndroidRuntime(6760):在android.database.sqlite.SQLiteConnection.nativePrepareStatement(本机方法)
03-02 06:47:46.825:E/AndroidRuntime(6760):在android.database.sqlite.SQLiteConnection.acquiredPreparedStatement(SQLiteConnection.java:882)
03-02 06:47:46.825:E/AndroidRuntime(6760):在android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:493)
03-02 06:47:46.825:E/AndroidRuntime(6760):在android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
03-02 06:47:46.825:E/AndroidRuntime(6760):位于android.database.sqlite.SQLiteProgram.(SQLiteProgram.java:58)
03-02 06:47:46.825:E/AndroidRuntime(6760):位于android.database.sqlite.SQLiteQuery。(SQLiteQuery.java:37)
03-02 06:47:46.825:E/AndroidRuntime(6760):位于android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
03-02 06:47:46.825:E/AndroidRuntime(6760):位于android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1314)
03-02 06:47:46.825:E/AndroidRuntime(6760):位于android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1161)
03-02 06:47:46.825:E/AndroidRuntime(6760):位于android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1032)
03-02 06:47:46.825:E/AndroidRuntime(6760):位于android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1200)
03-02 06:47:46.825:E/AndroidRuntime(6760):在com.example.wheresmystuff.Model.DB.getLostItems(DB.java:180)
03-02 06:47:46.825:E/AndroidRuntime(6760):在com.example.wheresmystuff.Presenter.ListingPresenter.list(ListingPresenter.java:33)
03-02 06:47:46.825:E/AndroidRuntime(6760):在com.example.wheresmystuff.Presenter.ListingPresenter。(ListingPresenter.java:26)
03-02 06:47:46.825:E/AndroidRuntime(6760):在com.example.wheresmystuff.View.DisplayItems.onCreate(DisplayItems.java:26)
03-02 06:47:46.825:E/AndroidRuntime(6760):在android.app.Activity.performCreate(Activity.java:5104)上
03-02 06:47:46.825:E/AndroidRuntime(6760):在android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)上
03-02 06:47:46.825:E/AndroidRuntime(6760):在android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
03-02 06:47:46.825:E/AndroidRuntime(6760):。。。还有11个

您有一个额外的逗号,而不是

KEY_NAME + " TEXT,
应该是

KEY_NAME + " TEXT);"

这里,它在myModel.getLostItems()方法中的select语句中显示错误消息,请检查您在查询中是否使用“”为item_name列传递了正确的参数。

从何处获得该错误消息?请粘贴myModel.getLostItems()好吗方法代码?当选择中显示错误时,
项目名称的值是多少statement@AkbariDipali发布了导致应用程序失败的我的查询。抱歉,这是要编辑掉的。更正此错误后,它仍然不起作用。发布您的查询语句。看来你需要
KEY_NAME + " TEXT);"