我正在尝试使用此代码执行FMDB插入:
dbCmd = @"INSERT INTO SiteData (SITE_ID, INITIAL_STA, ELEV, SITE_DESC, LOOP_COUNT, DATE) VALUES(?,?,?,?,?,?)",
txtSiteID.text,
[txtSTA.text floatValue],
[txtElev.text floatValue],
txtSiteDesc.text,
[NSNumber numberWithInt:0],
currentDate;
未通过“浮点值”方法调用修改的3个文本字段中的每一个都收到错误消息: “表达结果未使用”导致参数计数关闭,从而导致FMDB崩溃。
我没有看到代码写的任何问题......有人可以告诉我需要改变什么才能让它工作吗?
答案 0 :(得分:4)
我觉得你非常困惑。代码
dbCmd = @"INSERT INTO SiteData (SITE_ID, INITIAL_STA, ELEV, SITE_DESC, LOOP_COUNT, DATE) VALUES(?,?,?,?,?,?)",
txtSiteID.text,
[txtSTA.text floatValue],
[txtElev.text floatValue],
txtSiteDesc.text,
[NSNumber numberWithInt:0],
currentDate;
不会像您想象的那样使用占位符创建语句。它正在运行由comma operator分隔的一大堆表达式。变量dbCmd
以currentDate
的值结束,并且丢弃所有其他表达式的值。编译器警告您正在编写未使用的表达式。
我认为您需要做的事情就像
[db executeUpdate:@"INSERT INTO SiteData (SITE_ID, INITIAL_STA, ELEV, SITE_DESC, LOOP_COUNT, DATE) VALUES(?,?,?,?,?,?)",
txtSiteID.text,
[txtSTA.text floatValue],
[txtElev.text floatValue],
txtSiteDesc.text,
[NSNumber numberWithInt:0],
currentDate];
答案 1 :(得分:0)
dbCmd是什么类型的对象?如果是字符串,则需要使用[NSString stringWithFormat:]
和正确的字符串百分比编码。您不能只关注NSString
常量(@""
)上的参数。
编辑:见凯文的答案。
答案 2 :(得分:0)
以下是答案:
dbCmd = [NSString stringWithFormat: @"INSERT INTO SiteData (SITE_ID, INITIAL_STA, ELEV, SITE_DESC, LOOP_COUNT, DATE) VALUES(%@, %f, %f, %@, %d, %@)",
txtSiteID.text,
[txtSTA.text floatValue],
[txtElev.text floatValue],
txtSiteDesc.text,
[NSNumber numberWithInt:0],
currentDate];
像冠军一样工作!感谢大家的投入。我很感激!