天道酬勤,学无止境

iOS Swift import data from .sql file to existing SQLite database

I'm using SharkORM in my iOS Swift 3 app, what I'm trying to do is to import data to my SQLite database from a SQL script file, using the function:

SharkORM.rawQuery("INSERT INTO `Unit` (Id,name,symbol) VALUES (1,'kg/m²','kg/m²')")

However, I'm not able to add any record to my "Unit" table because I'm always getting the following error:

unrecognized token: \"\'k/gm²\""

Anyone know why this could be happening? and if there is another way to import .sql file to my database even if not using SharkORM.

Thanks in advance.

受限制的 HTML

  • 允许的HTML标签:<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • 自动断行和分段。
  • 网页和电子邮件地址自动转换为链接。

相关推荐
  • 导入 sqlite3.h 错误:在框架模块中包含非模块化头文件(import sqlite3.h error: include of non-modular header inside framework module)
    问题 我正在为我的应用程序创建一个自定义后端框架,它封装了我所有与数据库相关的逻辑,因此,当我们要使用任何数据库操作时,我们只需要调用该框架函数。 现在,对于数据库操作,我需要在名为 Data.swift 的文件中#import <sqlite3.h> ,其中存在我的所有数据库函数。 但这是 swift 文件,所以我如何导入 sqlite ..? 当我使用 bridging-header.h 时,我收到错误 error: using bridging headers with framework targets is unsupported bridging-header.h 里面有#import <sqlite3.h>并设置设置 Bridging Header 变量。 如果我在 Umbrella 标头中添加 import 语句这给了我错误 include of non-modular header inside framework module 我用谷歌搜索了很多,但无法找到正确的答案。 我还查看了 https://developer.apple.com/library/ios/documentation/Swift/Conceptual/BuildingCocoaApps/MixandMatch.html#//apple_ref/doc/uid/TP40014216-CH10
  • 带有预填充 .sqlite (Swift3) 的核心数据(Core Data with pre-filled .sqlite (Swift3))
    问题 目前我正在对现有的 iOS9 应用程序进行 Swift3/iOS10 更新,该应用程序为欧洲各地的电动汽车存储了大约 10.000 个充电点。 到目前为止,我总是使用预填充的数据库(.xcappdata 包中的 .sqlite、.sqlite-shm、.sqlite-wal 文件)来发布应用程序,但是在当前版本中,Apple 引入了 NSPersistentContainer 类,这使得它有点复杂。 在我的 AppDelegate 类中,我正在实例化我的 NSPersistentContainer 对象并将其传递给一个惰性变量,就像 Apple 在每个示例代码中所做的那样: lazy var stationDataPersistentContainer: NSPersistentContainer = { let fileMgr = FileManager.default let destinationModel = NSPersistentContainer.defaultDirectoryURL() if !fileMgr.fileExists(atPath: destinationModel.appendingPathComponent("StationData.sqlite").path) { do { try fileMgr.copyItem(at: URL
  • iOS SQLite.swift,关于应用升级?(iOS SQLite.swift, regarding upgrade of app?)
    问题 关于宏伟而惊人的 SQLite.swift,我想知道 您在应用商店中有一个应用,v7。 有升级到v8。 用户 X 确实使用应用商店将 v7 升级到 v8。 比如说在 v8 中,我们稍微改变了一个 sql 表,也许添加一列或重命名一列。 在这种情况下,是否应该在 SQLite.swift 中做任何事情或必须做任何特殊的事情? SQLite.swift 的处理方式是什么? (例如,在 Android 的帮助类中有一个方便的 onUpgrade 概念......它带有它自己的一组复杂问题。) 回答1 SQLiteOpenHelper 的实现非常简单: db = SQLiteDatabase.openDatabase(...); onConfigure(db); int version = db.getVersion(); if (version != mNewVersion) { db.beginTransaction(); try { if (version == 0) { onCreate(db); } else { if (version > mNewVersion) { onDowngrade(db, version, mNewVersion); } else { onUpgrade(db, version, mNewVersion); } } db.setVersion
  • Swift 3 从 appDelegate 中的 SQL 文件预加载(Swift 3 preload from SQL files in appDelegate)
    问题 我正在尝试快速 3 转换。 我正在 swift 2 项目中从 sql 文件中预加载数据。 我不确定如何在 swift 3.0 中完成这项工作? 下面是我的 swift 2 appDelegate 文件。 在 swift 3 中,核心数据堆栈已经发生了足够的变化,我不知道在哪里尝试重用与 swift 2 相同的代码。我正在使用的代码列在注释“为 SQLite 预加载添加”下. 谢谢 // MARK: - Core Data stack lazy var applicationDocumentsDirectory: URL = { // The directory the application uses to store the Core Data store file. This code uses a directory named "self.edu.SomeJunk" in the application's documents Application Support directory. let urls = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) return urls[urls.count-1] }() lazy var managedObjectModel
  • 在iOS上使用和访问现有的SQLite数据库(Use and Access Existing SQLite Database on iOS)
    问题 我在SQLite中有一个完全填充的数据库,希望在新应用程序中使用。 它相当大,因此,我希望尽可能避免将其更改为另一种格式。 如何使用该数据库随应用程序一起提供的方式使用? 编辑:例如,如果我只是将文件拖放到“支持的文件”目录中,如何访问它? 我该如何参考呢? 回答1 通过使用FMDB Framework可以简化SQLite数据库的交互。 FMDB是SQLite C接口的Objective-C包装器。 参考值得一读: FMDB框架文档 带情节提要的示例项目 初始设置 与应用程序包中的任何其他文件一样,添加SQLite DB然后使用以下代码将数据库复制到documents目录,然后使用documents目录中的数据库 首先下载FMDB框架提取框架,现在复制src/fmdb文件夹中的所有文件(而不是src/sample或src/extra文件夹)。 单击您的项目在Xcode的左列。 单击中间列中的主要目标。 点击“构建阶段”标签。 展开“将二进制文件与库链接”旁边的箭头。 点击“ +”按钮。 搜索libsqlite3.0.dylib并双击它。 将existing database复制到didFinishLaunchingWithOptions: app's document中,并在整个应用程序中维护数据库路径。 在您的AppDelegate中添加以下代码。 AppDelegate
  • IOS数据存储 之WCDB (一)
    IOS数据存储 之WCDB (一) 1. WCDB 简介1.1 使用WCDB框架3大优势1.2 WCDB 的一些基础概念1.2.1 类字段绑定(ORM)1.2.2 WINQ(WCDB语言集成查询)1.2.2.1 字段映射与运算符1.2.2.2 字段组合1.2.2.3 AllProperties1.2.2.4 AnyProperty 1.2.3 加密1.2.4 全局监控1.2.4.1 WCTError1.2.4.2 获取错误 1.2.5 损坏修复1.2.6 性能监控1.2.6.1 操作耗时1.2.6.2 监控耗时1.2.6.3 SQL执行监控 2. WCDB OC版本2.1 WCDB OC版本 增删改查(CRUD)2.1.1 增2.1.2 删2.1.3 改2.1.4 查 2.2 事务 (Transaction) 3. WCDB Swift版本3.1 WCDB.swift安装3.2 WCDB.swift使用 4. 数据库从FMDB迁移到WCDB4.1 为什么要迁移到WCDB?4.1.1 WCDB 对比FMDB的优势一:高效4.1.2 WCDB 对比FMDB的优势一:易用4.1.3 WCDB 对比FMDB的优势一:完整 4.2 FMDB迁移4.2.1 安装4.2.2 创建数据库4.2.3 打开数据库4.2.4 建表与ORM4.2.5 数据库升级4.2.6 访问数据库4.2.6.1 查询4
  • 如何检查核心数据数据库中存储的内容?(How can I check what is stored in my Core Data Database?)
    问题 我正在制作一个依赖核心数据的应用程序。 我能够在文本字段中输入数据并将其存储。 但是我需要知道是否正在存储数据。 我正在尝试对tableView创建一个detailView,但没有得到任何结果。 现在我想知道的是,因为我的代码做错了什么,还是数据正确存储了? 如何查看应用程序的CoreData数据库中存储的内容? 回答1 如果您将sqlite用作Core Data的存储介质,则可以在模拟器中运行您的应用程序,并尝试检查位于沙箱的Library文件夹中的数据库文件。 路径应类似于: ~/Library/Application Support/iPhone Simulator/5.1/Applications/3BF8A4B3-4959-4D8F-AC12-DB8EF4C3B6E1/Library/YourAppName.sqlite 要打开sqlite文件,您需要一个工具。 我使用了一个名为Liya的免费工具(http://itunes.apple.com/us/app/liya/id455484422?mt=12)。 回答2 这是我的解决方案(适用于iOS 9): 我使用在sqllitebrowser中打开数据库的automator / bash脚本。 该脚本在模拟器中找到最新安装的应用程序。 指示: 为SQLite安装数据库浏览器(http://sqlitebrowser
  • 如何将现有的数据库文件加载到Python sqlite3中的内存中?(How to load existing db file to memory in Python sqlite3?)
    问题 我有一个现有的sqlite3 db文件,需要在其上进行一些广泛的计算。 由于文件不大(〜10 10 MB ),因此从文件进行计算的速度非常慢,因此将其加载到内存中应该没有问题。 是否有Python方式将现有文件加载到内存中以加快计算速度? 回答1 这是我为flask应用程序编写的代码段: import sqlite3 from io import StringIO def init_sqlite_db(app): # Read database to tempfile con = sqlite3.connect(app.config['SQLITE_DATABASE']) tempfile = StringIO() for line in con.iterdump(): tempfile.write('%s\n' % line) con.close() tempfile.seek(0) # Create a database in memory and import from tempfile app.sqlite = sqlite3.connect(":memory:") app.sqlite.cursor().executescript(tempfile.read()) app.sqlite.commit() app.sqlite.row_factory =
  • 核心数据文件的位置 iOS 10(Core Data file's Location iOS 10)
    问题 我正在尝试使用 SQLite 浏览器查看我的核心数据对象。 我无法找到核心数据在哪里保存其 sql 文件。 我查看了应用程序文档文件夹,但那里什么也没有。 你知道IOS 10(模拟器)中的核心数据在哪里保存它的SQLite文件吗? 回答1 我在 XCode 8 Swift 3 OS macOS Sierra 上测试过 IOS 10 在你的 Appdelegate.swif t func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { let urls = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask) print(urls[urls.count-1] as URL) return true } 1. 常量.documentDirectory表示我们正在寻找 Document 目录 2. 常量.userDomainMask将我们的搜索限制在我们应用程序的沙箱中。 输出 file:///Users/Ashok/Library/Developer
  • 如何在Android应用程序中使用现有数据库(How to use an existing database with an Android application [duplicate])
    问题 这个问题已经在这里有了答案: 附带数据库的应用程序(15个答案) 8年前关闭。 我已经创建了一个SQLite数据库。 我想将此数据库文件与我的Android项目一起使用。 我想将此数据库与我的应用程序捆绑在一起。 应用程序如何创建该数据库的访问权限并将其用作数据库,而不是创建新的数据库? 回答1 注意:在尝试此代码之前,请在以下代码中找到此行: private static String DB_NAME ="YourDbName"; // Database name DB_NAME此处是您的数据库的名称。 假设您在Assets文件夹中拥有数据库的副本,因此,例如,如果您的数据库名称为ordersDB,则DB_NAME的值为ordersDB, private static String DB_NAME ="ordersDB"; 将数据库保留在Assets文件夹中,然后执行以下操作: DataHelper类: import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import android.content.Context; import android
  • Sqlite文件位置核心数据(Sqlite File Location Core Data)
    问题 通常,核心数据应用的sqlite存储文件位于 库>应用程序支持> iPhone Simulator> 7.1(或您使用的任何版本)>应用程序>(哪个文件夹包含您的应用程序)>文档 文件夹,但在IOS 8中找不到。我假设他们只是在iPhone Simulator文件夹中添加了一个8.0文件夹,但它不存在。 有人能够找到它吗? 回答1 我设法找到了sqlite文件,现在在此路径中: 库/开发人员/ CoreSimulator /设备/(数字和字母)/数据/容器/数据/应用程序/(数字和字母)/文档/ (数字和字母)代表您的应用程序/计算机唯一的文件夹,但看起来像这样:779AE2245-F8W2-57A9-8C6D-98643B1CF01A 我可以通过进入appDelegate.m来找到它,向下滚动到 - (NSURL *)applicationDocumentsDirectory 方法,以及NSLogging的返回路径,如下所示: // Returns the URL to the application's Documents directory. - (NSURL *)applicationDocumentsDirectory { NSLog(@"%@",[[[NSFileManager defaultManager] URLsForDirectory
  • Swift 3 preload from SQL files in appDelegate
    I am attempting a swift 3 conversion. I was preloading data from sql files in my swift 2 project. I am unsure how to make this work in swift 3.0? Below is my swift 2 appDelegate file. In swift 3 the core data stack has changed enough, that I do not know where to try to reuse the same code that worked for me with swift 2. The code i was using that worked is listed under the comment "added for SQLite preload". Thank you // MARK: - Core Data stack lazy var applicationDocumentsDirectory: URL = { // The directory the application uses to store the Core Data store file. This code uses a directory
  • Attach two SQLite-DB files to query over both files in Swift
    In Swift4 for iOS11 I would like to attach two SQLite database-files (file1.db and file2.db) in order to make a query over all data (i.e. over both databases). I have successfully implemented a SQL-query in one SQLite database using the following code (..here with an example of a name-query...): func readOneDB() -> String? { // create SQL-DB FilePath do { // create a documents-URL from filename self.file_1_URL = try createSQLFilePath(fileName: "file1", fileExtension: "db") } catch { return nil } let query = """ SELECT DISTINCT n.locations FROM names n WHERE n.name = "\(self.myName)" """ //
  • 在libgdx上使用iOS的sqlite数据库(robovm)(Use sqlite database for iOS (robovm) with libgdx)
    问题 我有一个libgdx项目(Android),在其中使用sqlite数据库。 我正在开发iOS版本(robovm)中的同一项目,但找不到关于sqlite或iOS版本数据库的任何信息。 是否可以使用相同的sqlite数据库? 谢谢。 回答1 我知道这是一个旧线程,但这对我有用 当然,您不必完全像这样做,但是这就是我的做法 首先,我为SQLite创建了一个帮助器类,称为.. SQLiteHelper这将初始化事物 package com.hamzahrmalik.mitto.sqlite; import java.io.File; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import SQLite.JDBCDriver; import com.hamzahrmalik.mitto.utils.Util; public class SQLiteHelper { private String DATABASE_NAME; private JDBCDriver driv; private Connection connection; final String DB_PATH = new File
  • How to initialize sqlite database once from a helper class in Android
    I have a custom DataBaseHelper class which extends SQLiteOpenHelper,which looks like this : package com.stampii.stampii.comm.rpc; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.ResultSet; import android.content.ContentValues; import android.content.Context; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase.CursorFactory; import android.database.sqlite.SQLiteException; import android.database.sqlite
  • 无法打开数据库/无法将(数据库)的区域设置更改为“en_US”(Failed to open database/ Failed to change locale for (database) to 'en_US')
    问题 我已经阅读了从 Failed to change locale for db '/data/data/my.easymedi.controller/databases/EasyMediInfo.db' 到 'en_US' 的解决方案,但它对我没有帮助。 我仍然有同样的错误。 这些是我的DBHelper类。 你能调查一下并帮助我吗? package com.example.mgr; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.sql.Date; import java.util.ArrayList; import android.content.Context; import android.database.Cursor; import android.database.SQLException; import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteException; import android.database.sqlite
  • IOS数据存储 之WCDB (二)WCDB.swift使用篇
    IOS数据存储 之WCDB (二)WCDB.swift使用篇 1.WCDB.Swfit基础使用1.1 WCDB.Swfit 简介1.1.1 模型绑定1.1.2 创建数据库与表1.1.3 操作数据1.1.3.1 插入操作1.1.3.2 查找操作1.1.3.3 更新操作1.1.3.4 删除操作 1.2. 模型绑定1.2.1 Swift 模型绑定1.2.2 字段映射1.2.2.1 字段映射的类型 1.2.3 字段约束1.2.3.1 自增属性 1.2.4 索引1.2.5 表约束1.2.6 虚拟表映射1.2.7 数据库升级1.2.8 文件与代码模版1.2.8.1 文件模版 1.3. 增删改查1.3.1 插入操作1.3.2 删除操作1.3.3 更新操作1.3.4 查找操作1.3.4.1 对象查找操作1.3.4.2 对象部分查询1.3.4.3 值查询操作 1.4. 数据库,表,事务1.4.1 数据库1.4.1.1 初始化1.4.1.2 标签1.4.1.3 打开数据库1.4.1.4 关闭数据库1.4.1.5 关闭数据库与线程安全1.4.1.6 内存回收1.4.1.7 文件操作 1.4.2 表1.4.3 事务1.4.3.1 性能1.4.3.2 原子性1.4.3.3 执行事务 1.5. 语言集成查询1.5.1 Column1.5.2 ColumnResult1.5.3 Convertible1.5.4
  • import sqlite3.h error: include of non-modular header inside framework module
    I am creating a custom back-end framework for my app which encapsulates all my database related logic, so, when we are going to use any database operation, we just need to call that framework function. Now, for database operations I need to #import <sqlite3.h> in the file called Data.swift where my all database functions exist. But this is swift file so how can I import sqlite..? When I use bridging-header.h, I receive error error: using bridging headers with framework targets is unsupported bridging-header.h has #import <sqlite3.h> inside it and set settings Bridging Header variable. If I add
  • 附加两个 SQLite-DB 文件以在 Swift 中查询这两个文件(Attach two SQLite-DB files to query over both files in Swift)
    问题 在 iOS11 的 Swift4 中,我想附加两个 SQLite 数据库文件(file1.db 和 file2.db),以便对所有数据(即两个数据库)进行查询。 我已经使用以下代码在一个 SQLite 数据库中成功实现了一个 SQL 查询(..这里有一个名称查询的例子......): func readOneDB() -> String? { // create SQL-DB FilePath do { // create a documents-URL from filename self.file_1_URL = try createSQLFilePath(fileName: "file1", fileExtension: "db") } catch { return nil } let query = """ SELECT DISTINCT n.locations FROM names n WHERE n.name = "\(self.myName)" """ // Open SQLite database var db: OpaquePointer? = nil if sqlite3_open(self.file_1_URL?.absoluteString, &db) == SQLITE_OK { var statement: OpaquePointer? = nil
  • 在 Swift 中通过 SQLite 数据库导入和查询 - iOS(Importing and querying through an SQLite database in Swift - iOS)
    问题 我正在制作一个应用程序,该应用程序使用具有 5 个不同表的大型数据库。 我想将该数据库导入应用程序包并能够通过表进行查询。 用户不会编辑数据库,因此不需要添加和删除记录。 在应用程序中添加数据库的最佳方法是什么? 回答1 过程如下: 将数据库添加到您的包中。 当您将其拖入您的项目时,您可以选择将其添加到代表您的主应用程序的目标中。 或者,查看目标设置,单击“Build Phases”并确认数据库出现在“Copy Bundle Resources”列表中。 使用像 FMDB 这样的框架来简化您的生活。 这是用 Objective-C 编写的,但在 Swift 中也能很好地工作。 你需要做的是: 将 FMDB 的 .h 和 .m 文件复制到您的项目中; 当提示创建“桥接头”时,请执行; 将以下行添加到您的桥接头: #import "FMDB.h" 通过遵循这些步骤,您可以在 Swift 项目中使用这个在 Objective-C 中开发的框架。 您现在可以使用 FMDB 框架编写 Swift 代码。 例如,用于打开数据库、从名为test的表中选择列x 、 y和z的 Swift 代码如下所示: let path = NSBundle.mainBundle().pathForResource("test", ofType:"sqlite") let database =