2011-12-02 223 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页面。