Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c Obj-C抱怨字段为;“未使用的表达式结果”;_Objective C_Sqlite_Fmdb - Fatal编程技术网

Objective c Obj-C抱怨字段为;“未使用的表达式结果”;

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],

我正在尝试使用以下代码执行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;
未被“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(杰克,你会认出的!)