ios - %s 和 %d 是什么?

标签 ios sqlite

我正在尝试学习 iOs 编程。我认为这是一个有点反向的问题。

我刚刚在 youtube 上完成了一个教程,使用 Xcode 创建一个简单的 iPhone 应用程序,该应用程序将允许您存储、列出和删除 SQLite3 数据库中的数据(因为我想要生成的应用程序需要一个数据库)。

然而,发布视频的家伙似乎没有解释他这样做的“原因”,所以我现在试图理解每段代码的作用 (我有 PHP 和 SQL Web 编程背景,因此我了解访问数据库、调用数据行等以在网站上显示内容。)

我不太明白这个 iOs 位的一部分是使用的 %s 和 %d 值,因为它们似乎没有在任何地方声明。

代码是;

if(sqlite3_open([dbPathString UTF8String], &personDB)==SQLITE_OK) {
        NSString *inserStmt = [NSString stringWithFormat:@"INSERT INTO PERSONS(NAME,AGE) values ('%s', '%d')",[self.nameField.text UTF8String],[self.ageField.text intValue]];

现在 %s 和 %d 清楚地从 self.nameField 和 self.ageField 中获取了它们的值。但这意味着我只能将两个值提交到表中?或者还有其他值的百分比,但肯定最多有 26。

如果您能给出任何解释,我将不胜感激。

此外,有人对其他全面解释的学习 iOS 编码的方法有任何建议吗?特别是如果您是第一次学习 iOS 编程且之前 C 编程技能有限的初学者。 我正在寻找的区域是创建一个应用程序,该应用程序将存储一些文本字段和图像,这些文本字段和图像将存储在数据库中,图像要么存储在数据库中,要么作为链接并适当命名。 我希望能够操作图像来调整其大小,以便针对 iPhone 显示屏进行优化(不需要应用程序中的高清图像) 稍后我希望能够弄清楚如何将本地数据库 (sqlite3) 文件上传到在线存储(我自己的服务器或保管箱),或将其同步到 SQL 数据库(从最初的情况来看,只需导出文件会更好,将图像嵌入到一个字段中对于这个项目会更好,尽管我知道这不是正常的做事方式)

最佳答案

%s%d 分别是空终止字符数组和有符号 32 位整数的格式说明符。您可以在String Programming Guide中找到有关说明符的详细信息。 。但是,您不应该为 SQLite 语句以这种方式格式化字符串,因为这会使您面临 SQL 注入(inject)的风险。相反,你应该 bind the values使用 ? 和适当的 sqlite3_bind* 函数。根据您的情况,您可以使用 sqlite3_bind_text 表示 NAME,使用 sqlite3_bind_int 表示 AGE

关于ios - %s 和 %d 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13482528/

相关文章:

javascript - iOS 原生应用升级为混合应用

ios - Swift 中的 Objective C Setter 覆盖

java - 如何从内存中流式传输sqlite?

android - SQLite : Exception:unknown error (code 14): Could not open database

ios - iOS 中的可操作通知仅是本地通知还是也可以从服务器发送?

ios - 为什么使用 Sharekit 将图像发布到 Facebook 如此缓慢?

ios - 支持 Retina 4 英寸,部署目标为 4.3

sqlite - 使用sqlite查找连续重复的数量

android - Android sqlite数据库访问引发锁定错误

php 命名空间找不到 SQLite3 类