Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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 SQLiteException:查询数据库时没有此类列_Android_Database_Sqlite_Exception - Fatal编程技术网

Android SQLiteException:查询数据库时没有此类列

Android SQLiteException:查询数据库时没有此类列,android,database,sqlite,exception,Android,Database,Sqlite,Exception,在尝试查询sqlite数据库表中的所有行时,出现以下异常: 08-24 20:36:48.134: E/AndroidRuntime(351): java.lang.RuntimeException: Unable to start activity ComponentInfo{se.p950tes.workouttracker/se.p950tes.workouttracker.SavedActivity}: android.database.sqlite.SQLiteException:

在尝试查询sqlite数据库表中的所有行时,出现以下异常:

08-24 20:36:48.134: E/AndroidRuntime(351): java.lang.RuntimeException: 
Unable to start activity ComponentInfo{se.p950tes.workouttracker/se.p950tes.workouttracker.SavedActivity}:
android.database.sqlite.SQLiteException: no such column: col_distance: , 
while compiling: SELECT _id, col_date, col_time, col_distance, col_route FROM workout
我从来没有更新过数据库,这是我第一次在这个设备上安装这个应用程序,它也在模拟器上测试了相同的结果。尽管如此,我还是尝试过几次升级版本号,没有任何改变

这是我的密码。该异常在getAll方法中引发

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;

public class DatabaseHandler
{
    public static final String DATABASE_NAME = "workout_tracker";

    private static final String KEY_ID       = "_id";
    private static final String KEY_DATE     = "col_date";
    private static final String KEY_TIME     = "col_time";
    private static final String KEY_DISTANCE = "col_distance";
    private static final String KEY_ROUTE    = "col_route";

    private static final String TABLE = "workout";
    private static final String[] ALL_FIELDS = {KEY_ID, KEY_DATE, KEY_TIME, KEY_DISTANCE, KEY_ROUTE};

    private static final int DATABASE_VERSION = 3;

    private final Context context;
    private DatabaseHelper helper;
    private SQLiteDatabase db;

    public DatabaseHandler(Context context)
    {
        this.context = context;
        this.helper = new DatabaseHelper(context);
    }

    public void connect()
    {
        db = helper.getWritableDatabase();
    }
    public void disconnect()
    {
        db.close();
    }

    public Cursor getAll()
    {
        return db.query(TABLE, ALL_FIELDS, null, null, null, null, null);
    }

    private static class DatabaseHelper extends SQLiteOpenHelper
    {
        private static final String CREATE = "CREATE TABLE " + TABLE + "("
                                                + KEY_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, "
                                                + KEY_DATE + " INTEGER NOT NULL, "
                                                + KEY_TIME + " INTEGER NOT NULL, "
                                                + KEY_DISTANCE + "INTEGER NOT NULL, "
                                                + KEY_ROUTE + " BLOB NOT NULL"
                                                + ");";
        DatabaseHelper(Context context)
        {
            super(context, DATABASE_NAME, null, DATABASE_VERSION);
        }
        @Override
        public void onCreate(SQLiteDatabase db)
        {
            try
            {
                db.execSQL(CREATE);
            }
            catch(SQLException e)
            {
                e.printStackTrace();
            }
        }
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion)
        {
            Log.w("DBHandler", "Upgrading database from version "+oldVersion+" to "+newVersion+", which will destroy all old data");
            db.execSQL("DROP TABLE IF EXISTS "+TABLE);
            onCreate(db);
        }
    }
}

我意识到这个“为什么我会得到这个SQLiteException”的问题被问了很多,但到目前为止,我所看到的大多数问题都不是用引号之类的东西括起来的。如果结果是重复的,我会提前道歉。

您在
的“INTEGER NOT NULL”中缺少一个前导空格,

谈谈尴尬。我已经看过那些台词了,我不知道有多少次了,但从来没有看到过。。。干杯,伙计!这是每个人迟早都会犯的错误。把它看作是一种成年礼。