- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 fmdb
库。
我想插入新记录,但我不知道该怎么做:
if let db = database, let q = db.executeUpdate("insert into \(table) (catid,subcat_id,id,subcat_title,title,description,lat,lon,takhfif,images,wifi,apple_health,wc,full_time,pos,work_hours,phone,mobile,fax,website,email,address,facebook,instagram,linkedin,telegram,googleplus,twitter,publish,feature,manager,city,rating_sum,rate_count,lastip,parking,isMallID,mallID,discount_images,price_images,newProduct_images,services_images,order_online,out_upon,cat_title,cat_icon,last_modify,item_logo,cat_logo,rate_sum1,rate_sum2,rate_sum3,rate_count1,rate_count2,rate_count3,rate_title1,rate_title2,rate_title3,rate_enable) values (\(catid),\(subcat_id),\(id),'\(subcat_title)','\(title)','\(description)','\(lat)','\(lon)','\(takhfif)','\(images)',\(wifi),\(apple_health),\(wc),\(full_time),\(pos),'\(work_hours)','\(phone)','\(mobile)','\(fax)','\(website)','\(email)','\(address)','\(facebook)','\(instagram)','\(linkedin)','\(telegram)','\(googleplus)','\(twitter)',\(publish),\(feature),'\(manager)','\(city)',\(rating_sum),\(rate_count),'\(lastip)',\(parking),\(isMallID),\(mallID),'\(discount_images)','\(price_images)','\(newProduct_images)','\(services_images)',\(order_online),\(out_upon),'\(cat_title)','\(cat_icon)',\(last_modify),'\(item_logo)','\(cat_logo)',\(rate_sum1),\(rate_sum2),\(rate_sum3),\(rate_count1),\(rate_count2),\(rate_count3),'\(rate_title1)','\(rate_title2)','\(rate_title3)',\(rate_enable))") {
}
但我在构建之前收到了这条消息:
cannot invoke executeUpdate with an argument list of type string
最佳答案
你用错了api。第一个参数是 sql,每个值都必须用“?”表示。第二个(值)是值的数组。试试这个:
if let db = database, let q = db.executeUpdate(
"insert into \(table) (catid,subcat_id,id,subcat_title,title,description,lat,lon,takhfif,images,wifi,apple_health,wc,full_time,pos,work_hours,phone,mobile,fax,website,email,address,facebook,instagram,linkedin,telegram,googleplus,twitter,publish,feature,manager,city,rating_sum,rate_count,lastip,parking,isMallID,mallID,discount_images,price_images,newProduct_images,services_images,order_online,out_upon,cat_title,cat_icon,last_modify,item_logo,cat_logo,rate_sum1,rate_sum2,rate_sum3,rate_count1,rate_count2,rate_count3,rate_title1,rate_title2,rate_title3,rate_enable) values (?, ?, ? ...., ?, ?, ? )"
values: [catid, subcat_id, id, subcat_title, title, description, lat, lon, takhfif, images, wifi, apple_health, wc, full_time, pos, work_hours, phone, mobile, fax, website, email, address, facebook, instagram, linkedin, telegram, googleplus, twitter, publish, feature, manager, city, rating_sum, rate_count, lastip, parking, isMallID, mallID, discount_images, price_images, newProduct_images, services_images, order_online, out_upon, cat_title, cat_icon, last_modify, item_logo, cat_logo, rate_sum1, rate_sum2, rate_sum3, rate_count1, rate_count2, rate_count3, rate_title1, rate_title2, rate_title3, rate_enable]) {
}
注意:我没有统计值,所以你要确保“?”的计数字符串内部正是您的值的计数!
也许你应该考虑一个函数来提高代码的可读性。类似的东西:
extension FMDatabase {
func insert(into table: String, row values: [(column: String, content: Any)]) {
guard (values.count > 0) else { fatalError(values.count > 0, "Inserting nothing into a table makes no sense!") }
var sql = "INSERT INTO \(table) ("
var contents: [Any] = []
for (index, value) in values.enumerated() {
sql += index == 0 ? value.column : ", \(value.column)"
contents.append(value.content)
}
sql += ") VALUES ("
for index in 0..<values.count {
sql += index == 0 ? "?" : ", ?"
}
sql += ")"
executeUpdate(sql, values: contents)
}
}
然后你可以像这样插入值:
if let db = database {
db.insert(
into: table,
row: [
(column: "catid", content: catid),
(column: "subcat_id", content: subcat_id),
...
(column: "rate_enable", content: rate_enable)
]
)
}
这样不是更好读吗?
关于ios - 如何使用 executeUpdate 插入新行 - FMdatabase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43685491/
我收到此错误“FMDatabase 未打开”。即使我在执行查询之前先打开数据库。这是我用来打开数据库的数据库实例的代码。 var instance = ModelManager() class Mod
正在从我的移动应用程序中的服务预加载数据。 这里我在 NSOperationQueue 中添加了大约 7 个服务,所有这些操作结果都会更新数据库。 更新数据库时,日志中出现警告,如“FMDatabas
我的应用程序从 fm 数据库读取一些数据,并使用核心绘图库以图形方式显示它。我的应用程序第一次读取数据库时一切都很好,但问题是在将新数据插入数据库后,我执行了 sql select 语句,但它不读取插
我正在使用 Salesforce Mobile SDK 开发 iOS 混合应用程序。我正在使用 SmartStore 来保存 sObject 信息。虽然我面临一些问题。第一次打开应用程序并登录时,我在
我正在使用 FMDatabase 作为我的 iOS 应用程序的 sqlite 包装器,有一个地方我必须提取日期。我这样走: .... ac.date=[s dateForColumn:@"date"]
我有一个同步方法用于我正在构建的应用程序,使用 FMDatabase 包装器在本地 SQLite 中存储数据。当我将所有查询放在一个类中时,一切正常。但是,为了保持复杂性,我为部分同步添加了一些数据
我有以下行,当它运行时在 FMDB 上崩溃: -[FMDatabase executeUpdate:error:withArgumentsinArray:orDictionary:orVAList:]
我有一个应用程序使用 FMDatabase 插入用户收集的数据和一些从网络下载的数据。由于对数据库的同时请求过多,我目前遇到了一些崩溃问题。 我想通过我的应用程序并将 FMDatabaseQueue
我是 iOs 开发的新手,我正在尝试关注 this tutorial 一切似乎都正常,但是当我创建 ModelManager 类时,代码无法构建并出现以下错误 class ModelManager{
我正在尝试通过 Swift 类向 FMDB 发送请求。 这是有效的: self.database.executeQuery("SELECT * FROM foods WHERE id = ?", wi
刚刚偶然发现外键在 sqlite 中默认是禁用的。我有“删除级联”外键并且删除父表记录不会删除子记录。各种帖子表明您需要在每个连接上启用它“PRAGMA foreign_keys = ON;”。那么,
尽管我很少遇到 FMDatabase 问题,但今天我注意到一些奇怪的行为,并想知道这是一个错误还是由于我自己的错误。 NSString *query = [NSString stringWithFor
下面的代码没有给出任何错误,但没有执行插入操作,我不明白为什么。我还是个新手,想知道查看此查询结果或查看是否有错误消息的最佳方法。我确定它很简单,例如“BOOL success = [database
我正在使用 fmdb 库。 https://github.com/ccgus/fmdb 我想插入新记录,但我不知道该怎么做: if let db = database, let q = db.exec
您好,我正在尝试将 FMDatabase 保存到 iCloud。我只能保存 NSData 或 UIDocument 我该怎么办?有办法这样做吗?如果是这样,请告诉我任何意见将不胜感激。 最佳答案 默认
我目前在我的 iOS 应用程序中使用 FMDatabase,我对它非常满意。我打算用 SQLCipher 加密 sqlite 数据库。 这是我的问题: 1) FMDatabase 和 SQLCiphe
我在尝试使用 FMDatabase 时遇到了问题。 我添加了这些文件: FMDatabaseQueue FMDatabaseAdditions FMDatabase FMResultSet FMDat
我正在使用SQLite开发iPhone应用程序。我决定使用fmdb。使用fmdb,如何执行以下操作:-插入,更新,选择,删除? 由于无法使用FMDatabase开发应用程序。我下载了FMDatabas
我想使用 FMDB 在我的应用程序中创建 3 个或更多不同的单例来处理不同的商店场景,一个单例的例子是这样的: .h @interface MyManager : NSObject + (id)sha
问题: - 我正在使用 FMDatabase 类将数据存储在数据库中并从数据库访问数据。在一张表中,我使用 Blob 数据类型来存储图像。方式: UIImage *img = [UIImag
我是一名优秀的程序员,十分优秀!