0

我正在尝试使用以下代码进行 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 崩溃。

我认为编写的代码没有任何问题......有人可以告诉我我需要改变什么才能让它工作吗?

4

3 回答 3

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;

并没有像您想象的那样创建带有占位符的语句。它运行着一大堆用逗号分隔的表达式。变量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];
于 2012-04-19T00:22:18.487 回答
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];

像冠军一样工作!谢谢大家的意见。我很感激!

于 2012-04-19T16:41:52.573 回答
0

dbCmd 是什么类型的对象?如果是字符串,则需要使用[NSString stringWithFormat:]正确的字符串百分比编码。您不能只在NSString常量 ( @"") 上添加参数。

编辑:见凯文的回答。

于 2012-04-19T00:21:21.230 回答