我在SQLite数据库程序中有一些错误,它显示"表用户没有名为psize的列(代码1)"在android工作室

时间:2015-04-19 18:27:55

标签: android android-sqlite sqliteopenhelper

我制作了一个android程序,它是数据库程序。它只需从EditText获取数据并将其存储到SQLite数据库中。但是,问题是它无法存储数据并且放弃了一个只能在程序运行时才能在LOGCAT中看到的错误。这是我的DBHelper代码,它有助于创建表:

public class DbHelper extends SQLiteOpenHelper {
static String DATABASE_NAME = "userdata";
public static final String TABLE_NAME = "user";
public static final String KEY_FNAME = "fname";
public static final String KEY_LNAME = "lname";
public static final String KEY_PSIZE = "psize";
public static final String KEY_PPRICE = "pprice";
public static final String KEY_ID = "id";

public DbHelper(Context context) {
    super(context, DATABASE_NAME, null, 2);
}

@Override
public void onCreate(SQLiteDatabase db) {
    String CREATE_TABLE = "CREATE TABLE "
            + TABLE_NAME + "("
            + KEY_ID + " INTEGER PRIMARY KEY, "
            + KEY_FNAME + " TEXT, "
            + KEY_LNAME + " TEXT, "
            + KEY_PSIZE + " NUMBER, "
            + KEY_PPRICE + " NUMBER);";
    db.execSQL(CREATE_TABLE);
}

@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
    db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
    onCreate(db);
}}

此代码不会在活动中显示数据库数据(假设它在哪里),但会出现错误:

"表用户没有名为psize(代码1)"

的列

我确信这里存在问题,但我无法找到答案。

1 个答案:

答案 0 :(得分:0)

我认为Sqlite没有NUMBER类型的字段。这些都是受支持的字段:

<强> INTEGER:

  • INT

  • INTEGER

  • TINYINT

  • SMALLINT

  • MEDIUMINT

  • BIGINT

  • UNSIGNED BIG INT

  • INT2

  • INT8

文字

  • CHARACTER(20)

  • VARCHAR(255)

  • 变化字符(255)

  • NCHAR(55)

  • 天赋(70)

  • NVARCHAR(100)

  • TEXT

  • CLOB

<强> NONE

  • BLOB

  • 未指定数据类型

<强> REAL

  • REAL

  • DOUBLE

  • DOUBLE PRECISION

  • FLOAT

<强> NUMERIC   - NUMERIC

  • DECIMAL(10,5)

  • BOOLEAN

  • DATE

  • DATETIME

点击此处了解详情:https://www.sqlite.org/datatype3.html 尝试使用整数,看看是否有问题。