我发现sqlite似乎是一个奇怪的错误。
我有一张桌子
CREATE TABLE controller(id INTEGER PRIMARY KEY ASC, controller_number TEXT, password TEXT);
使用数据
INSERT INTO controller (controller_number, password) VALUES ("1234", 1234);
那里没有问题,但请检查一下。
sqlite> SELECT * FROM controller;
1|1234|1234
sqlite> UPDATE controller SET controller_number="12345", password="password" WHERE id=1;
sqlite> SELECT * FROM controller;
1|12345|1234
任何人都可以解释为什么会发生这种情况,或者这是一个应该提出的错误吗?
答案 0 :(得分:2)
答案 1 :(得分:0)
>CREATE TABLE controller(id INTEGER PRIMARY KEY ASC, controller_number TEXT, password TEXT);
>INSERT INTO controller (controller_number, password) VALUES ("1234", 1234);
>SELECT * FROM controller;
1|1234|1234
>UPDATE controller SET controller_number="12345", password="password" WHERE id=1;
>SELECT * FROM controller;
1|12345|1234
上面会出现问题,但如果这样做
>UPDATE controller SET controller_number='123456', password='password' WHERE id=1;
我明白了
>SELECT * FROM controller;
1|123456|password
很明显发生了什么,第一个UPDATE是设置密码=密码而不是密码=“密码”,第二个查询执行正确的方式。
任何人都可以详细说明为什么会发生这种情况,或者它应该首先发生?
答案 2 :(得分:0)
对于与 SELECT 或 UPDATE 语句中的任何字段名称相同的任何字段值,您必须对该字段值使用单引号(表示文字值,而不是双引号,表示字段名称)。我在我的应用中修复了这个问题。