首页 > 解决方案 > 我正在创建一个 android 项目,它将保存用户的用户名和密码,在设备上运行应用程序时出现错误

问题描述

06-12 18:20:51.794 17318-17379/zaphlabs.com.knotty E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
    Process: zaphlabs.com.knotty, PID: 17318
    java.lang.RuntimeException: An error occurred while executing doInBackground()
        at android.os.AsyncTask$3.done(AsyncTask.java:309)
        at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
        at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
        at java.util.concurrent.FutureTask.run(FutureTask.java:242)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
        at java.lang.Thread.run(Thread.java:818)
     Caused by: android.database.sqlite.SQLiteException: no such column: username (code 1): , while compiling: SELECT _id, username, password FROM knot
        at android.database.sqlite.SQLiteConnection.nativePrepareStatement(Native Method)
        at android.database.sqlite.SQLiteConnection.acquirePreparedStatement(SQLiteConnection.java:887)
        at android.database.sqlite.SQLiteConnection.prepare(SQLiteConnection.java:498)
        at android.database.sqlite.SQLiteSession.prepare(SQLiteSession.java:588)
        at android.database.sqlite.SQLiteProgram.<init>(SQLiteProgram.java:58)
        at android.database.sqlite.SQLiteQuery.<init>(SQLiteQuery.java:37)
        at android.database.sqlite.SQLiteDirectCursorDriver.query(SQLiteDirectCursorDriver.java:44)
        at android.database.sqlite.SQLiteDatabase.rawQueryWithFactory(SQLiteDatabase.java:1316)
        at android.database.sqlite.SQLiteDatabase.queryWithFactory(SQLiteDatabase.java:1163)
        at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1034)
        at android.database.sqlite.SQLiteDatabase.query(SQLiteDatabase.java:1202)
        at zaphlabs.com.knotty.database.KnotProvider.query(KnotProvider.java:55)
        at android.content.ContentProvider.query(ContentProvider.java:1027)
        at android.content.ContentProvider$Transport.query(ContentProvider.java:238)
        at android.content.ContentResolver.query(ContentResolver.java:502)
        at android.content.CursorLoader.loadInBackground(CursorLoader.java:64)
        at android.content.CursorLoader.loadInBackground(CursorLoader.java:42)
        at `enter code here`android.content.AsyncTaskLoader.onLoadInBackground(AsyncTaskLoader.java:312)
        at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:69)
        at android.content.AsyncTaskLoader$LoadTask.doInBackground(AsyncTaskLoader.java:57)
        at android.os.AsyncTask$2.call(AsyncTask.java:295)
        at java.util.concurrent.FutureTask.run(FutureTask.java:237)

请帮助我。很长一段时间以来我都遇到了错误并且无法解决以下问题是我的完整代码,您可能会看到它来帮助我。

代码在这里

标签: javaandroid

解决方案


根据 stcak 跟踪,表“结”中不存在“用户名”列。我希望 create table 语句由于语法错误(缺少空格)而失败。

试试下面的创建语句,(确保您卸载并再次安装应用程序以检查,因为更新时未调用创建表查询)

      String CREATE_KNOT_PET_TABLE_ENTRIES="CREATE TABLE "+ KnotContract.KnotEntry.TABLE_NAME+ " ("+
           _ID +" INTEGER PRIMARY KEY AUTOINCREMENT, "+
           COLUMN_USERNAME+" TEXT NOT NULL,"+
           COLUMN_PASSWORD+" TEXT );";

推荐阅读