SQLite INTEGER(11)列表现奇怪

时间:2014-04-29 16:37:13

标签: sql sqlite dataset

因此,这是一个SQLite数据库,表map_id中的locations列的类型为INTEGER(11)。我尝试将map_id0-1的所有实例更新为NULL

UPDATE locations SET map_id = NULL WHERE map_id = 0 OR map_id = -1

我将此查询添加到QueriesTableAdapter中的强类型数据集中。我运行此查询,然后用基础数据库数据填充我的DataSet表locations,希望我在0列中看不到任何-1map_id。 Booo!我有一些。我再次运行UPDATE查询并检查受影响的行数;它是零。因此,UPDATE查询不会影响任何行,这意味着没有map_id 0-1的行。然而,我在被提取的DataTable中看到了它们。这里发生了什么?

1 个答案:

答案 0 :(得分:0)

因为SQLite is typeless,人们可以在任何列中存储任何内容而且不会抱怨。所以在我的案例中发生的事情是有人在INTEGER类型列中存储了空字符串。这就是我的查询没有更新这些行的原因,即使它们看起来与NULL单元格类似。我现在在UPDATE查询中添加了空字符串检查。希望这有助于有人在路上。