我制作了一个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)"
的列我确信这里存在问题,但我无法找到答案。
答案 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
<强> NONE 强>
BLOB
未指定数据类型
<强> REAL 强>
REAL
DOUBLE
DOUBLE PRECISION
FLOAT
<强> NUMERIC 强> - NUMERIC
DECIMAL(10,5)
BOOLEAN
DATE
DATETIME
点击此处了解详情:https://www.sqlite.org/datatype3.html 尝试使用整数,看看是否有问题。