如何将数据插入 iPhone 中的 SQLite 数据库

2023-12-07

我是 iPhone 开发新手。我想将某些数据插入数据库并检索它 并将其显示在表格中。我创造了Database data.sqlite与表“用户”。该表有两个值:id(varchar) 和 name(varchar)。我通过“insert into user value('1','xxxx');”在表中插入了3行数据在终端窗口中。我创建了一个名为“testDb”的基于导航的应用程序。在应用程序代理我有两种方法

- (void)createEditableCopyOfDatabaseIfNeeded {
    NSLog(@"Creating editable copy of database");
    // First, test for existence.
    BOOL success;
    NSFileManager *fileManager = [NSFileManager defaultManager];
    NSError *error;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *writableDBPath = [documentsDirectory stringByAppendingPathComponent:@"data.sqlite"];
    success = [fileManager fileExistsAtPath:writableDBPath];
    if (success) return;
    // The writable database does not exist, so copy the default to the appropriate location.
    NSString *defaultDBPath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"data.sqlite"];
    success = [fileManager copyItemAtPath:defaultDBPath toPath:writableDBPath error:&error];
    if (!success) {
        NSAssert1(0, @"Failed to create writable database file with message '%@'.", [error localizedDescription]);
    }
}

and

+(sqlite3 *) getNewDBConnection{
    sqlite3 *newDBconnection;
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *path = [documentsDirectory stringByAppendingPathComponent:@"data.sqlite"];
    // Open the database. The database was prepared outside the application.
    if (sqlite3_open([path UTF8String], &newDBconnection) == SQLITE_OK) {
        NSLog(@"Database Successfully Opened :)");
    }
    else {
        NSLog(@"Error in opening database :(");
    }
    return newDBconnection;
}

在根视图控制器中

-(void)initializeTableData{
    sqlite3 *db=[DatabaseTestAppDelegate getNewDBConnection];
    sqlite3_stmt *statement=nil;
    const char *sql="select * from user";
    if (sqlite3_prepare_v2(db, sql, -1, &statement, NULL)!=SQLITE_OK)
        NSAssert1(0,@"error in preparing staement",sqlite3_errmsg(db));
    else {
        while(sqlite3_step(statement)==SQLITE_ROW)
            [tableData addObject:[NSString stringWithFormat:@"%s",(char*)sqlite3_column_text(statement,1)]];
    }
    sqlite3_finalize(statement);
}

- (void)viewDidLoad {
    [super viewDidLoad];
    tableData=[[NSMutableArray alloc]init];
    [self addMyObjectIntoDatabase];
    [self initializeTableData];
    self.title=@"Database test";
}

显示内容

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
    }
    NSLog(@"before displaying data");
    cell.textLabel.text=[tableData objectAtIndex:indexPath.row];
    NSLog(@"after displaying data");
    // Configure the cell.
    return cell;
}

这可以很好地显示表格的内容。但现在我想在表中插入另一行并显示插入的内容以及以前的内容。由于我是 iPhone 新手,我从教程中学习了如何读取数据库并显示其内容。如何进一步执行再次插入和显示的任务?


如果您确实有兴趣学习如何使用 SQLite 来管理 iPhone 应用程序中的数据,我建议您完成以下教程,因为它是一个非常好的介绍:

iphone-编程-教程-使用-sqlite-part-1创建-todo-列表

本教程使用 SQLite 在 iPhone 应用程序中处理选择、更新、插入和删除数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何将数据插入 iPhone 中的 SQLite 数据库 的相关文章

  • UITouch移动速度检测

    我正在尝试检测触摸移动的速度 但并不总能得到我期望的结果 补充 速度峰值太多 任何人都可以发现我是否在做一些时髦的事情或建议更好的方法吗 void touchesBegan NSSet touches withEvent UIEvent e
  • 外观代理 - iOS 5 的 setShadowImage 替代品?

    您好 我正在使用此代码来设置导航栏的阴影图像 if self navigationController navigationBar respondsToSelector selector shadowImage UINavigationBa
  • 验证 iOS 应用程序时出现 com.apple.developer.linked-domains 问题

    当我在 Xcode 中使用 Organizer 验证我的项目时 出现以下错误 无效的代码签名权利 你的申请包的签名包含代码签名权利iOS 上不支持的 具体来说 值 for key com apple developer associated
  • 如何在 Objective C 类中设置布尔类型属性

    如何在 Objective C 类中使用布尔属性 我是这样做的 property nonatomic copy BOOL locationUseBool 但它给出了错误 具有 复制 属性的属性必须是对象类型 正确的申报方式是什么 您也可以这
  • 了解 FTS3/FTS4:什么是虚拟表并从中搜索具有可搜索的非虚拟表?

    阅读 SQLite3 的 FTS3 FTS4 文档的第一部分后 我现在感到非常困惑 我感到困惑的原因是散布在网络上的示例 我相信它没有涵盖所有可能的用例 另一个原因是我目前所处的情况 话虽如此 我有一个名为 Note 的表 其中包含两个类型
  • Monotouch如何管理资源(字符串、图像等)?

    在 Android 中 我将应用程序字符串放入名为的文件中strings xml 例如 对于意大利语翻译 我需要创建一个 value it 文件夹并放入strings xml在此新文件夹中包含带有意大利语标签的文件 Monotouch 如何
  • 以编程方式设置 Mac 鼠标/触控板速度

    我正在尝试更改我正在开发的应用程序的鼠标跟踪速度 注意 不是加速 我到处寻找一种方法来做到这一点 但找不到任何东西 我怀疑这与我在 IOKit hidsystem 框架上的这个函数中给出的值有关 IOHIDSetAccelerationWi
  • iPhone UIWebview:如何强制使用数字键盘?是否可以?

    我正在尝试使用 PhoneGap 来开发一些 iPhone 应用程序 PhoneGap 基本上包装了一个 UIWebView 它运行良好 问题是我的应用程序有几个仅接受数字输入的输入字段 我确实需要强制使用数字键盘 而不是接受默认的标准键盘
  • iOS 从另一个类更新 ViewController UILabel

    我是开发新手 一直在用头撞墙试图弄清楚这一点 我确信 我错过了一些愚蠢的东西 但在尝试了各种不同的解决方案后 我仍然无法得到结果我在寻找 我希望能够从另一个类更新 ViewController 中的 UILabel 这是一个我无法运行的小演
  • Xcode 5 - clang:错误:链接器命令失败,退出代码 1(使用 -v 查看调用)

    I am facing a linker error when running my source code I have attached a screenshot also I am new in iOS development and
  • 检测SQLite3中的FTS3扩展

    用于检测是否安装了 FTS3 扩展模块的 SQLite 查询是什么 或者是否可以使用 SQLite3 查询获取已安装扩展的列表 它必须与pysqlite2 我知道我可以使用以下命令获取表格列表SELECT FROM sqlite maste
  • Swift:在标签背景中制作图像

    我想将标签放入带有角半径的红色矩形的图像中 条件是图像大小必须等于或略大于标签大小 为此我找到了一个类似的question https stackoverflow com questions 3037902 adding backgroun
  • UITextView自定义自动完成

    有没有办法为 UITextView 实现自定义自动完成 例如给它一个NSDictionary or NSArray需要注意的字符串 你必须自己编程 如果您实现 UITextViewDelegate 协议 则该函数 BOOL textView
  • 如何检查dispatch_async块是否已完成运行

    所以基本上我需要能够在块完成运行后运行 segue 我有一个块可以执行一些 JSON 操作 我需要知道它何时完成运行 我有一个队列 我称之为 json queue jsonQueue dispatch queue create com ja
  • 测试 NSURLConnection 失败

    如何测试 NSURLConnection 的失败 另外 如何判断是否因飞行模式或 WiFi 关闭而失败 在我的测试中 虽然弹出警报告诉用户他们需要打开 WiFi 但如果他们忽略它 我的应用程序就会坐在那里并旋转等待响应 如果您的连接委托是
  • SQLiteAssetHelper 甚至在从资产文件夹复制数据库之前就导致立即崩溃

    https github com jgilfelt android sqlite asset helper https github com jgilfelt android sqlite asset helper 我要从SQLiteOpe
  • 模拟 Push Segue 的自定义 Segue 将 VC 变成僵尸

    使事情简短明了 我写了一个自定义的segue void perform UIView preV UIViewController self sourceViewController view UIView newV UIViewContro
  • 发射图像偏离 20 像素(在 y 轴上)

    我有一个名为 Default png 的 320 480 大小的启动图像 并且该应用程序配置为还显示状态栏 当我的应用程序启动时 图像的前 20 个像素被状态栏截断并隐藏 根据 Apple 的 HIG 列出的 iPhone 和 iPod T
  • 在UIView中画线

    我需要在 UIView 中画一条水平线 最简单的方法是什么 例如 我想在 y coord 200 处画一条黑色水平线 我没有使用界面生成器 也许这有点晚了 但我想补充一点 有更好的方法 使用 UIView 很简单 但相对较慢 此方法会覆盖视
  • 仅在导航弹出后分组 UITableViewCell 上才会出现黑色角

    我不是图形专家 但我以某种方式设法通过使用一些 CG 代码将背景视图设置为 backgroundView 来制作一些好看的自定义分组 UITableViewCells 在 3 1 3 之前的所有 SDK 中 也许是 3 2 我还没有在 iP

随机推荐

  • NodeJS 中的空合并赋值运算符 (??=)

    我正在尝试在 NodeJS 中使用 Nullish 合并赋值运算符 这可能吗 const setValue object path value gt const indices first 0 second 1 keys path repl
  • Java - PKCS11 和 MSKeyStore

    我正在尝试使用 MS KeyStore 中的不同证书签署一个字符串 但是 我知道有从 MS Keystore 中的令牌导入的密钥 所以 我的问题是 如果我通过密钥库并尝试使用引用 pkcs11 的证书进行签名 我会弹出一个窗口 要求输入 p
  • 从文本变量读取 rpart 输入参数

    我在用着rpart制作决策树 例如 fit lt rpart Kyphosis Age Number Start data kyphosis 如何从文本文件中读取公式部分并以以下格式获取它rpart喜欢 我试过了 predictor var
  • Protégé 中枚举的数据范围表达式

    我想将数据类型属性的范围定义为字符串的详尽枚举 这样个人只能将枚举中的一个字符串作为该属性的值 例如 名为 颜色 的数据类型属性只能采用 3 个值 红色 绿色 和 蓝色 我正在使用 OWL 2 和 Prot g 5 0 使用 Prot g
  • cf Push 是否尊重 .gitignore 的使用?

    我正在使用 gitignore下面的文件希望当我推送我的应用程序时 tmp 目录和交换文件将被忽略 但这并没有发生 现在我想知道是否cf push甚至考虑 gitignore swp tmp 有谁知道如果cf push需要一个 gitign
  • Google 地图 API 地理编码返回两个不同地点的相同坐标

    我正在尝试获取这些 POI 的坐标 但 Google 地理编码返回错误的坐标 两个地址的坐标相同 在谷歌地图中它们工作得很好 我应该如何为他们构建正确的 URL https maps googleapis com maps api geoc
  • 从 Swift 中的另一个类访问 IBOutlet

    我是 Swift 和 Mac 应用程序的新手 因此 我今天正在编写一个 Mac 应用程序 但经过大量搜索后 我仍然困惑如何从另一个类访问 IBOutlet 我正在使用 StoryBoard 并且有两个 NSTextFieldpath mir
  • ValueError: 形状必须至少为 3 级,但对于 '{{node BiasAdd}} = BiasAdd[T=DT_FLOAT, data_format="NCHW"](add,bias)' 为 2 级,输入形状为:

    Done 我只是想运行并复制以下项目 https machinelearningmastery com time series prediction lstm recurrent neural networks python keras 基
  • 我的虚拟环境可以访问全局包

    I have virtualenv 15 1 0安装 问题是当我创建虚拟环境时 virtualenv venv 然后激活它 它将可以访问全局安装的软件包 django admin例如 尽管在中提到了这种情况 但还是发生了virtualenv
  • avro union的json编码

    我的 avro 模式中有一个 favorite number 的联合 它可以是 null 或 int 当我对对象进行 json 编码时 我得到 name Alyssa favorite number int 7 favorite color
  • 如何在 Access 2010 中将文本字段转换为日期/时间字段?

    我正在将 Excel 文件导入 Access 2010 日期字段 CALLDATE 以文本 YYYYMMDD 形式出现 我想使用更新查询来更新新字段 dateofcall 但使用日期 时间格式 我尝试使用 UPDATE tbl Import
  • 在分配之前如何将变量评估为另一个变量? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 这个问题分为子问题 一个回复建议查看Python中的指针 更多here 为什么不修改当地人呢 问题here 原始问题 usr bin python Description try
  • 无法追加到返回的列表中?

    def f lst a b c return lst 1 why is f append a is None True虽然f class is
  • 主线程 Runloop 在打开 nsmenu 时被阻止

    我有一个应用程序 其 UI 元素包括NSStatusItem和菜单 在我的应用程序中 我正在使用NSTask异步执行一些操作 我正在使用使用获得的输出NSFileHandleReadCompletionNotification更新菜单 但现
  • 将单元格复制到新工作表列时出现错误 429“Activex 组件无法创建对象”

    此代码复制每个工作表中的 P 和 Q 列 并将它们发布到合并的新工作表中 它还删除所有空白单元格 该代码适用于非常小的文件 但不会在新工作簿上产生相同的结果 从以前的 小工作簿 到新工作簿的所有列都是相同的 唯一改变的是工作表的数量 为 6
  • 如何在不使用 TYPE_KEYGUARD 的情况下禁用主页按钮?

    我创建一个锁屏应用程序 我需要禁用主页按钮 因此如果该手机被盗 则无法访问该手机 我的锁屏是全屏活动 我使用此代码禁用主页按钮 但它给了我一些错误 这是代码 Override public void onCreate Bundle save
  • 如何在窗体上绘制透明文本?

    有没有办法在具有某些控件的表单上绘制透明文本 如果我使用TLabel控件 它总是显示在窗体上的控件后面 您不能使用TLabel控件 因为它不是窗口控件 因此它将被窗体的每个窗口子控件隐藏 你可以使用TStaticText 这确实是一个窗口控
  • 如何捕获多个重复组?

    我需要捕获相同模式的多个组 假设 我有以下字符串 HELLO THERE WORLD 我写了以下模式 A Z 我想要它做的是捕获每一个单词 因此第 1 组是 HELLO 第 2 组是 那里 第 3 组是 世界 我的正则表达式实际上捕获的只是
  • 调用控制器中的视图方法

    我想在控制器中调用视图方法 但我不知道如何 我寻找类似的示例 但我没有找到它 我可以在这段代码中做到这一点吗 我是否必须重新构建它 我使用javafx和fxml技术 来构建用户界面 我的视图文件 它有 gotoRegister 和 goto
  • 如何将数据插入 iPhone 中的 SQLite 数据库

    我是 iPhone 开发新手 我想将某些数据插入数据库并检索它 并将其显示在表格中 我创造了Database data sqlite与表 用户 该表有两个值 id varchar 和 name varchar 我通过 insert into