2011-12-02 194 views
3

我在想如何訪問坐在遠程服務器上的sqlite數據庫。我已經讀過線程勸阻它,但如果可能的話我需要這樣做。從遠程服務器訪問sqlite

 /* 
QUrlOperator xc("http://example.com"); 
xc.get("testdatabase.db"); 
*/ 

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); 

    db.setDatabaseName(xc.get("testdatabase.db")); 
    //idea 

    if(!db.open()) 
    { 
    qDebug() << db.lastError(); 
    qFatal("Failed to connect."); 
    } 

回答

1

您不能直接像這樣遠程訪問sqlite數據庫。如果你需要共享它,你將不得不開發一個Web服務,並與Web服務交談,而不是來自你的Qt應用程序的數據庫。

有一些工具可以充當這樣的網絡服務,例如, this site有一些鏈接。

5

SQLite不是一個網絡數據庫,所以它沒有內置任何網絡連接能力。

你將需要:

  • 讓SQLite的DB通過網絡訪問的共享驅動器或
  • 寫/查找現有的網絡服務器/網絡服務上爲它提供

Web應用程序本質上是一個Web服務。如果您碰巧在此數據庫之上運行Web應用程序,只需將特定級別的數據庫訪問權限暴露給管理員。

不建議你這樣做,因爲多線程/客戶端/等。同時訪問SQLite數據庫可能會很快導致併發問題。

+0

它不工作好...一個更好的解決方案web應用.. –

0

sqlite是一個文檔數據庫,這意味着它幾乎只是您的數據的平面文件存儲,只有最小的數據庫引擎,這就是爲什麼它總計300kb。作爲一種解決方案,您可以做的是將數據庫從您的遠程位置通過ftp複製到您的位置,或者通過爲其分配網絡共享位置來訪問它。儘管只有一個用戶可以一次寫入sqlite,但請注意。

+6

「文檔數據庫」在這種情況下是不是要與無SQL數據庫相混淆,如MongoDB的小項目IM等等.SQLite是一個關係數據庫。我認爲這裏的含義是SQLite數據存儲在一個單獨的文件中,並且沒有額外的數據庫服務器在其上運行,因此只需將文件從一個地方複製到另一個地方就足以移動並製作數據庫可以在另一臺機器上訪問 – jefflunt

0

你可以在服務器上使用php來運行你需要的任何sql命令,並從設備導航到php頁面。