问题标签 [grdb]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
50 浏览

swift - GRDB 中没有成员“保存”

我正在使用 GRDB 和自定义结构。获取行非常有效,但是在尝试更新或删除行时会出现问题。当我尝试添加行来保存记录时,我收到一个编译器错误,即“变量名”没有成员“保存”。如果我尝试删除,也会出现同样的错误。

该结构的定义如下:

使用它的类是这样的:

查看所有文档,看来我所要做的就是在实例上调用 .save 以达到 .save 或 .delete 的通用实现,但是它没有识别附加功能。有任何想法吗?

0 投票
1 回答
114 浏览

swift - 在操场上运行 GRDB

作为这个编程环境的新手,出现在 Playground 顶部的这条指令GRDB让我不知道如何继续:

要运行这个 Playground,请选择并构建 GRDBOSX 方案。

到目前为止采取的步骤包括转到github 页面> 克隆或下载 > 下载 zip > 解压缩。

我能够在模拟器上运行示例项目,但到目前为止,无法运行示例游乐场。我得到:

手动安装的文档似乎涵盖了添加GRDB到您的项目,而不是添加到游乐场。

由于示例项目已经工作,我认为有一种简单的方法可以让游乐场工作,但在我开始尝试之前,可能做错了,我想我会在这里询问正确的方法。

0 投票
2 回答
629 浏览

swift - 使用 Swift Package Manager、Cocoa Pods 或其他工具将最小的 GRDB 添加到 Xcode 项目

来自GRDB 在 github上的演示 iOS 应用程序在我的 iMac 的手机模拟器上运行良好,但目前尚不清楚如何在我自己的 iOS 应用程序中构建 GRDB(此问题的第 1 部分),并使用最少的组件集(部分这个问题的2个)。1

GRDB安装说明 建议提供一个选项:“Swift 包管理器”。由于我是这个编程环境的新手,这听起来像是“正确的方法”,但在尝试之后,我仍然在猜测如何成功构建我的项目。

到目前为止完成的步骤:

  • 创建了一个新项目Applications > Xcode (9.4 beta) > Create a new Xcode project > Single View App > "FirstDb"
  • 放入import GRDB视图控制器(显然还不能编译)
  • 应用程序 > 实用程序 > 终端
    • cd /Users/owner/documents/xcodeprojects/firstdb
    • mkdir GRDB
    • cd GRDB
    • swift package init --type library
  • 编辑Package.swift.package(url: "https://github.com/groue/GRDB.swift.git", from: "2.10.0")在适当的位置添加
  • 应用程序 > 实用程序 > 终端
    • swift package resolve(导致“获取”、“克隆”、“解决”)

状态 之后Product > Buildimport GRDB线路依旧说no such module

所以问题的第 1 部分仍未解决。我还不能解决问题的第 2 部分。很抱歉,如果这些中的任何一个或两个对于富有的 Xcode 开发人员来说都是显而易见的,但是在研究了这个问题之后,我没有找到具体的指导。

使用 SPM 不是必需的,因此如果集成 GRDB 的其他选项是更好的选择,我想看看如何使用其中之一进行集成。

脚注

  1. 我想了解仅添加使用该Record对象所需的部分 GRDB 以及能够为 iOS 项目执行 SQL 语句所需的步骤。假设在使用 GRDB 基础的项目中不需要大部分完整的包(测试、监视等),从而产生更紧凑的 iOS 应用程序。
0 投票
2 回答
258 浏览

ios - ViewController 中的 SQLite 错误 14

错误是打印 SQLite 错误 14

什么是 SQLite 错误 14?

首先使用GRDB并首先调用SqlLite

为什么要引发错误?

IOS 11.0 Swift 4.0 Grdb 2.10.0

构建到 Iphone8 模拟器

0 投票
2 回答
563 浏览

swift - 如何在grdb中获取完整的QueryInterfaceRequest sql字符串,包括字符串中的所有参数(GRDB.StatementArguments)

我需要获取查询接口的完整 sql 查询,以便将它们保存在用户默认值中,但我找不到此功能

更新:为了实现完整的查询字符串:

  1. 包括被 sqlite 修剪以进行注入的参数,您不能手动用问号替换这些参数。

  2. 您无法实现这些论点的真正价值,因为它们是私有的

0 投票
1 回答
292 浏览

swift - 如何从 GRDB 中的只读数据库连接中调用新的数据库连接?

下面的函数返回一条Ledgers记录。大多数时候,它会在可选_currentReceipt变量中找到它,或者通过搜索数据库,不需要在那里写。我想使用只读的 GRDB 数据库连接。只读数据库连接可以在不同线程上并行运行。

在极少数情况下,前两个步骤失败,我可以创建一个默认分类帐。调用try FoodyDataStack.thisDataStack.dbPool.write { writeDB in ...会抛出致命错误,数据库连接不可重入。我正在寻找一种方法来保存该默认分类帐,而不必将整个函数包装在读写连接中。

我可以在 GRDB .read 块中的单独队列上调用 NSOperation 吗?

编辑:我把这个问题留在这里,但我想我可能会进行过早的优化。我将尝试使用 dbQueue 而不是 dbPool,看看性能如何。如果速度需要,我会回到 dbPool。

0 投票
1 回答
75 浏览

grdb - How do I determine whether a database connection is read/write or read-only in GRDB?

In GRDB I can create read-only database connections with

I can create read-write database connections with

In each case I can call a function from within the closure using db as an argument. In GRDB read-only database connections can run in parallel in different threads. Write database connections block the database.

I have a pattern I would like to use in some functions:

  • Select a record filtered on some attributes.
  • If a record is found, return it.
  • If no record is found, create a default placeholder record with those attributes.
  • If the db is read-write, save the default placeholder and return it.
  • If the db is read-only, just return the placeholder

Is there a way to determine if the db is read-only? Looking through the reference documentation at http://groue.github.io/GRDB.swift/docs/4.1/Classes/Database.html, I don't see a simple way to determine this aside from error handling.

I could just attempt to save in the function and catch the error if the db is read-only.

0 投票
0 回答
89 浏览

swift - 使用 GRDBCombine 获取唯一项并使用 SwiftUI 将它们显示在列表中

我在https://github.com/EricG-Personal/grdb_test.git有一个示例测试项目

在 ContentView.swift 中,我目前有一个显示数据库中所有项目的列表。

在此之下,我想要另一个列表,显示测试表中所有唯一的“名称”。

我迷失在 GRBD、Combine 和 SwiftUI 之间的详细信息中,并且不确定在使用 GRBDCombine 时为第二个列表提供数据库所需数据的代码是什么样的。

0 投票
1 回答
580 浏览

swift - Swift 中的 GRDB - .fetchAll 只返回一列

我的原始代码

我的问题

在这段代码中,如果我执行类似的查询,select fld_str_firstname from myOwnUserView where fld_int_id = 2;我会在 returnStrs 数组中得到一个元素,这与预期的一样。然后选择这两个字段,就像在 nameQuery 中一样,我仍然只能在 returnStrs 数组中得到一个字符串。

为什么会这样,我如何适应它以获取响应中的所有选定列?

0 投票
1 回答
774 浏览

sqlite - SQLite CREATE TRIGGER ... SQLite 错误 1 ​​与语句:不完整的输入

试图在 Xcode / Swift5 / GRDB 中创建触发器。下面代码块中的触发器静默失败,所以我移动它并看到标题中的错误[我已从标题中删除了 SQL 语句的文本]。奇怪的是,DB Browser 将运行 SQL 并创建触发器就好了。并且应用程序使用外部创建的触发器按预期响应。并且内部的 UPDATE 似乎在触发器之外工作正常。

打开了GRDB github repo 的问题...只是通过原始 SQL。在线检查几个验证器。所有人要么说没有错,要么CREATE TABLE在下面的块中失败了……所以对任何验证者都不信任。

记得我在 ipad 上有 DraftCode,包括 phpLiteAdmin。发送 SQL 并得到相同的incomplete input错误。回到桌面...更新 PHP,并得到phpLiteAdmin...同样的错误。

所以...它是像https://github.com/sqlitebrowser/sqlitebrowser/issues/1470这样的 SQLite 错误?或者更可能是我的语法错误。我以前从来没有玩过触发器……所以我可能是个忽视显而易见的笨蛋。如果是这样,请帮我纠正。

还有一点有趣...在phpLiteAdmin,使用触发器生成器,一切正常。但尝试运行生成的创建 SQL 语句、复制/删除触发器/并重新粘贴,会产生相同的错误

任何有关以 SQL 语句GRDBphpLiteAdminSQL 语句创建触发器的帮助将不胜感激。谢谢。