Ios Swift-我可以从其他智能手机访问SQLITE吗?
我在swift中有一个应用程序,可以在我的智能手机上用SQLITE管理小型商店,我想另一个应用程序可以为卖家提供,可以访问相同的数据库。就好像手机是服务器或其他智能手机访问了相同的.sqlite文件一样 我查看了其他主题,但没有找到类似的主题,而且我找到的主题也没有答案 这可能吗 类似下面的代码Ios Swift-我可以从其他智能手机访问SQLITE吗?,ios,swift,sqlite,Ios,Swift,Sqlite,我在swift中有一个应用程序,可以在我的智能手机上用SQLITE管理小型商店,我想另一个应用程序可以为卖家提供,可以访问相同的数据库。就好像手机是服务器或其他智能手机访问了相同的.sqlite文件一样 我查看了其他主题,但没有找到类似的主题,而且我找到的主题也没有答案 这可能吗 类似下面的代码 var db: OpaquePointer? = nil let fileURL = try! FileManager.default.url(for: .docume
var db: OpaquePointer? = nil
let fileURL = try! FileManager.default.url(for: .documentDirectory, in: .userDomainMask, appropriateFor: nil, create: false)
.appendingPathComponent("some form or link with the address of the other smartphone")
if sqlite3_open(fileURL.path, &db) == SQLITE_OK {
print("Successfully opened connection to database at \(String(describing: fileURL.path))")
} else {
print("cant open database")
}
SQLite不允许多个线程写入数据库。您很可能会在尝试从多个设备访问它时遇到死锁和超时,即使您只写入少量数据
您可能希望研究不同的RDBMS,如MySQL、MariaDB或任何其他实现客户机-服务器模型的数据库系统,即一个应用程序读写数据库,并通过网络套接字与客户机对话,或在SQLite之上实现客户机-服务器模型。在您提到的数据库中,我可以按照我要求的格式来做吗?不可以。SQLite使用一个基于文件的数据库,要连接到该数据库,需要打开一个到该文件的连接,这就是上面所做的。通常,对于通过打开文件连接到的任何数据库,不能让多个线程写入同一个文件,否则会有极高的损坏风险。出于此原因,SQLite禁止多个连接同时写入同一数据库文件。您需要移动到支持客户机-服务器模式的数据库,例如,使用套接字进行通信或自己实现。这是一个错误的问题,实际上,即使可能,其他设备也不应该访问数据库。相反,通信应该在应用程序级别进行,这样,如果某个应用程序想要获取一些数据,它会要求您的应用程序从数据库中获取数据,然后将其发送到另一个应用程序。