报错
今天做一个unity中的Sqlite项目,查询数据时,报错:no such column :XXX;
定义:
SelectSingleLineByUSE(string _tableName, string _use)
{
string quary = “SELECT * FROM " + _tableName+ " WHERE USE=”+ _use;
return ExecuteQuary(quary);
}
调用:
SelectSingleLineByUSE(MyTable,“房租”);
检查
1、创建时,有“USE”列,检查之后,发现这个列是存在的,打开数据库的表,发现USE列也是存在的;
2、检查数据库语句,Log中打印:SELECT * FROM MyTable+ " WHERE USE=房租;发现空格并没有问题,不是格式错误;
解决
后来终于突然明白过来:USE的类型为VARCHAR(64),不能直接用“=”进行比较,需要将列数据用 COLLATE NOCASE修饰
CREATE TABLE [MyTable]
(
[USE] TEXT NOT NULL COLLATE NOCASE
);
然后判断时用string,format("’{0}’",“房租”)将“房租”字符串转为Sqlite中的字符串,语句:SELECT * WHERE “USE”=string.format("’{0}’",“房租”),此时功能正常!