2013-08-06 33 views
2

我正在開發一個livecode應用程序,其中我需要使用基於雲的sqlite,這意味着它應該可以共享所有users.As現在我使用本地sqlite,但我認爲它只適用於一個設備應用程序,儘管每個用戶都有自己的數據庫。但我想要的是共享一個數據庫給所有用戶。有人建議我使用JSON解析遠程數據庫。 http://lessons.runrev.com/s/lessons/m/4071/l/7003-connecting-to-a-mysql-database。這個mysql數據庫可以通過網址,用戶名和密碼從web訪問。這裏沒有任何Json解析。在Sqlite的情況下可能嗎? 請幫忙Sqlite基於雲代碼的Livecode集中式數據庫

回答

0

SQLite被設計成單用戶本地文件數據庫,所以它不適合你的應用程序。有很多基於雲的數據存儲選項。你可以,如果你想直接連接到遠程數據庫服務器,如MySQL,但這意味着啓用遠程訪問,這是一個安全風險。如果您只需要從一組受限制的IP訪問數據庫,那麼可能值得考慮,但使用SSL和只具有有限權限的用戶。

我不知道JSON如何參與,但您可以使用Web服務器+服務器端腳本來創建返回JSON對象的API。這是比遠程訪問更安全的方法。還有其他選擇... Amazon Web Services SimpleDB可能適合您。

2

如果您爲它編寫服務器,可以將SQLite用於多個客戶端。請注意,使用MySQL或PostgreSQL服務器可能更容易,即使他們的強類型很煩人。

對於聯網的SQLite,您需要一個通過套接字連接從客戶端接收數據的服務器。所以基本上你會有一個LiveCode程序傳遞SQL查詢,它通過網絡傳遞。一個非常simplicistic例子(未經測試):

服務器:

on mouseUp 
    accept connections on port 8080 with message "queryMessage" 
end mouseUp 

on queryMessage theIP 
    read from socket theIP until return 
    put it into mySQL 
    delete char -1 of mySQL --remove trailing return that was added for network protocol 
    put revOpenDatabase("SQLite","path/to/myDatabase.sqlite",,,) into connectionID 
    put revDataFromQuery(,,connectionID,mySQL) into myResult 
    revCloseDatabase connectionID 
    write length(myResult) & return & myResult to socket theIP --no return needed, length based 
    close socket theIP 
end queryMessage 

客戶端:

on mouseUp 
    -- make sure to know what IP the server is running from! 
    -- the number after ":" is the port 
    put "localhost:8080" into myIP 
    open socket to myIP 
    write "SELECT * FROM tableName" & return to socket myIP 
    read from socket myIP until return 
    put it into returnStringLength 
    read from socket myIP for returnStringLength chars 
    put it into field "the sql query result" 
    close socket myIP 
end mouseUp 

你需要額外的:

  • 方式來處理像INSERT,PRAGMA等命令。(基本上是revExecuteSQL)
  • SQL錯誤報告/ han危及周圍
  • 插槽錯誤報告/處理
  • 如果公衆開放的,你需要安全
  • 日誌記錄誰在查詢和正在發生的事情

我只用4-8客戶這種做法,所以我不知道它有多好尺度較大客戶基礎的。請注意,在這種情況下,「服務器」不在共享虛擬主機上運行(例如網頁),而是在同一本地網絡(適合與客戶端在同一臺PC上運行的示例中)的PC上的「正常」程序。在互聯網上這樣做通常需要你在路由器或防火牆上轉發端口,所以設置起來有點困難,但也有可能。

確保查找字典中示例中使用的命令。