Objective c Obj-C抱怨字段为;“未使用的表达式结果”;
我正在尝试使用以下代码执行FMDB插入:Objective c Obj-C抱怨字段为;“未使用的表达式结果”;,objective-c,sqlite,fmdb,Objective C,Sqlite,Fmdb,我正在尝试使用以下代码执行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],
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;
未被“float value”方法调用修改的3个文本字段中的每一个都会收到一个错误,说明:
“Expression result unused”(表达式结果未使用)导致参数计数关闭,进而导致FMDB崩溃
我认为写的代码没有任何问题。。。有人能告诉我需要更改什么才能使其正常工作吗?dbCmd是什么类型的对象?如果是字符串,则需要使用
[nsstringwithformat:
和正确的字符串百分比编码。您不能只在NSString
常量(@“
)上添加参数
编辑:见凯文的答案。dbCmd是什么类型的对象?如果是字符串,则需要使用
[nsstringwithformat:
和正确的字符串百分比编码。您不能只在NSString
常量(@“
)上添加参数
编辑:见凯文的答案。我认为你非常困惑。代码
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];
我觉得你非常困惑。代码
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];
答案如下:
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];
像冠军一样工作!谢谢大家的意见。我很感激 以下是答案:
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];
像冠军一样工作!谢谢大家的意见。我很感激 真是个坏主意。这就是SQL注入漏洞是如何产生的。是的,在我发布它之后,我马上意识到了这一点。我不熟悉FMDB的方法,所以我只是给出了一个一般性的“这就是为什么编译器会发疯”,但我对你的答案投了赞成票,因为它好得多。真是个坏主意。这就是SQL注入漏洞是如何产生的。是的,在我发布它之后,我马上意识到了这一点。我不熟悉FMDB的方法,所以我只是给出了一个一般性的“这就是为什么编译器会崩溃”,但我已经对你的答案投了更高的票,因为它要好得多。我把你的代码,把“db”修改为“FMDB”,然后运行它。。。不再得到那个特定的错误,但它在FMDB中正在消亡。。。似乎它没有得到args。。。我正在考虑放弃FMDB,只使用纯SQLite。。。XD XD(杰克,你会认识到的!)我把你的代码,把“db”修改成“fmdb”,然后运行它。。。不再得到那个特定的错误,但它在FMDB中正在消亡。。。似乎它没有得到args。。。我正在考虑放弃FMDB,只使用纯SQLite。。。XD XD(杰克,你会认出的!)