Ios Swift-我可以从其他智能手机访问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

我在swift中有一个应用程序,可以在我的智能手机上用SQLITE管理小型商店,我想另一个应用程序可以为卖家提供,可以访问相同的数据库。就好像手机是服务器或其他智能手机访问了相同的.sqlite文件一样

我查看了其他主题,但没有找到类似的主题,而且我找到的主题也没有答案

这可能吗

类似下面的代码

        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禁止多个连接同时写入同一数据库文件。您需要移动到支持客户机-服务器模式的数据库,例如,使用套接字进行通信或自己实现。这是一个错误的问题,实际上,即使可能,其他设备也不应该访问数据库。相反,通信应该在应用程序级别进行,这样,如果某个应用程序想要获取一些数据,它会要求您的应用程序从数据库中获取数据,然后将其发送到另一个应用程序。