获取错误更新sqlite
我正在做项目,我在数据库路径结构。我正在使用sqlite数据库进行存储。在这我的问题是当我更新表显示错误。对于数据库部分,我使用预写类。每当需要时我都会调用这个类的方法。看下面你可以理解。获取错误更新sqlite
这下面的代码工作正常
[DataCachingHelper updateTable:@"sendertable" data:dic3 where:@"MESSAGE_ID='1234'"];
,但是当我发送对象的“里”,这显示一些错误。
[DataCachingHelper updateTable:@"sendertable" data:dic3 where:@"MESSAGE_ID=%@",@"hai"];
我得到的错误:
"too many arguments to methods call expected 3,have 4".
这里MESSAGE_ID
是VARCHAR TYPE
这个问题很明显。您无法传递字符串格式,因为在转换为字符串格式之前,编译器会编译参数。从你的方法声明中允许的参数必须是3.
所以编译器检测4个参数是因为你用字符串传递格式。
也在sqlite
数据库VARCHAR
类型字段使用双引号字段值。
所以你的字符串应该是这样的:
NSString *whereClauseString = [NSString stringWithFormat:@"MESSAGE_ID = \"%@\"",@"hai"];
或者,如果值是预先已知简单地创建的字符串是这样的:
NSString *whereClauseString = @"MESSAGE_ID = \"hai\"";
然后用这个字符串作为第三个参数为updateTable
方法:
[DataCachingHelper updateTable:@"sendertable" data:dic3 where:whereClauseString];
谢谢你的回答 – 2014-12-05 09:02:36
化妆这两步。
NSString *strWhere=[NSString stringWithFormat:@"MESSAGE_ID='%@'",@"hai"];
[DataCachingHelper updateTable:@"sendertable" data:dic3 where:strWhere];
我也试过用单引号,但是我得到了同样的错误 – 2014-12-04 05:10:59
什么是数据库中的MESSAGE_ID类型int或字符串 – 2014-12-04 05:12:21
MESSAGE_ID ID是VARCHAR TYPE – 2014-12-04 05:15:17
“MESSAGE_ID”的数据类型是什么?当你发送'@“MESSAGE_ID ='1234''时会给出什么错误? – 2014-12-04 04:53:27
@Virussmca MESSAGE_ID是varchartype – 2014-12-04 05:11:59