【发布时间】:2021-04-15 14:52:34
【问题描述】:
我用这个语句做了一个SQL数据库
final String SQL_CREATE_PRIMARY_TABLE = "CREATE TABLE " +
TABLE_NAME + " (" +
P_K + " INTEGER PRIMARY KEY AUTOINCREMENT, " +
SET_NAME + " TEXT, " +
MARKS_O1 + " INTEGER, " +
MARKS_O2 + " INTEGER, " +
MARKS_O3 + " INTEGER, " +
MARKS_O4 + " INTEGER, " +
ATTEMPTS + " INTEGER " +
")";
正如您所见,MARKS_01 到 MARKS_04 列具有 INTEGER 数据类型,但我不小心为其提供了一个具有如下 getter 和 setter 的浮点类型:-
public float getMO1() {
return MO1;
}
public void setMO1(float MO1) {
this.MO1 = MO1;
}
public float getMO2() {
return MO2;
}
public void setMO2(float MO2) {
this.MO2 = MO2;
}
public float getMO3() {
return MO3;
}
public void setMO3(float MO3) {
this.MO3 = MO3;
}
public float getMO4() {
return MO4;
}
public void setMO4(float MO4) {
this.MO4 = MO4;
}
public int getAttempts() {
return Attempts;
}
public void setAttempts(int attempts) {
Attempts = attempts;
}
而且,即使是整数数据类型,最终结果也让我感到惊讶,它对于浮点值非常有效
我想知道它背后的原因,要么是 SQL 数据库的属性,要么是任何错误
而且,我可以将此属性/错误用作其他数据库的加分项
【问题讨论】:
-
因为 SQLite doesn't really have 不同的数据类型。一切都存储为字符串。您也可以在这些列中存储
awesome -
来自:sqlite.org/datatype3.html#storage_classes_and_datatypes:SQLite 版本 3 数据库中的任何列,除了 INTEGER PRIMARY KEY 列,都可以用于存储任何存储类的值。
-
@a_horse_with_no_name 那么SQLite中其他数据类型的意义是什么
-
不知道。如果你愿意,你可以把它们排除在外。可能只是用于文档目的。
-
在此处阅读 SQLite 的“类型亲和性”:sqlite.org/datatype3.html#type_affinity,其中提到:该类型是推荐的,不是必需的。
标签: sqlite android-sqlite android-sql