我想知道我如何能够访问一个坐在远程服务器上的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." );
}
答案 0 :(得分:7)
SQLite不是网络数据库,因此它没有内置任何网络连接功能。
你需要:
Web应用程序本质上是一种Web服务。如果您碰巧在此数据库之上运行Web应用程序,只需将某些级别的数据库访问权限暴露给管理员。
不建议您这样做,因为多个线程/客户端/等。同时访问SQLite DB可能会很快导致并发问题。
答案 1 :(得分:3)
Navicat可以通过SSH连接到远程sqlite数据库。
对于使用phpliteadmin
的小型项目答案 2 :(得分:2)
sqlite是一个文档数据库,这意味着它几乎只是数据的平面文件存储,只有最小的数据库引擎,这就是它总共300kb的原因。您可以做的解决方案是通过ftp将数据库从远程位置复制到您的位置,或者通过为其分配网络共享位置来访问它。但请注意,一次只有1个用户可以写入sqlite。
答案 3 :(得分:1)
您无法像这样远程直接访问sqlite数据库。如果您需要共享它,您将不得不开发一个Web服务并与您的Qt应用程序中的Web服务而不是数据库进行通信。
有一些工具可以充当像这样的东西的网络服务,例如this site有一些链接。
答案 4 :(得分:1)
尽管sqlite本身不提供任何网络终结点,但是您可以使用网络GUI,例如sqlite-web。
假设您已经安装了python,则可以使用
进行安装pip install sqlite-web
安装后,请使用以下命令启动Web界面:
sqlite_web my_database.db
默认情况下,它在http://127.0.0.1:8080/上运行,即只能从本地主机访问。
要使其在您的LAN / WAN上可见,请使用:
sqlite_web --host 0.0.0.0 my_database.db
虽然在自己的家庭网络上运行--host 0.0.0.0
很好,但是在公共主机上进行加密是一个非常糟糕的主意(即使该应用允许设置密码)。要在公共主机上进行远程访问,最好在127.0.0.1
上运行它,然后通过ssh转发端口。
免责声明:我与该应用程序的作者无关。只是具有与op相同的需求,并在github上找到了该应用。
答案 5 :(得分:0)
SQLite仅基于文件。没有办法通过TCP / IP与它交谈。
与Access数据库文件类似,您必须将数据库文件放在网络共享文件夹中。路径通常是UNC路径,如“\ server \ sharename \ folderpath \ databasefile”。
问题是您构建的连接字符串不是连接字符串。这是一个部分字符串。你有这个:
DataSource = @"\\\\" + txtipaddress.Text + @"\qscanDBAttacheds\test.s3db;Version=3;New=False;Compress=True;"
“DataSource”部分必须是您构建的字符串的一部分。你没有那个。你需要这个:
string connString = @"Data Source=\\" + txtipaddress.Text + @"\qscanDBAttacheds\test.s3db;Version=3;New=False;Compress=True;"
答案 6 :(得分:0)
您可以考虑切换到PostgreSQL而不是SQLite,数据库的操作非常相似。您可以在处理主键等方面稍有不同。例如,在INSERT语句中,您将在SQLite中传递一个NULL作为主键,而在Postgre中,您将其传递为DEFAULT(假设您希望数据库为您创建键)。
例如,在Python3中,我知道的代码差异是PostgreSQL允许远程连接,并且避免SQL注入语法略有不同,因为SQLite3的方式将与?
一起使用,而PostgreSQL9.5的方式将与{{ 1}}
切换到Postgre将为您提供远程连接的可能性,并且比使用本地数据库(仅适用于中小型带宽应用程序)要明确。
答案 7 :(得分:-1)
您可以在服务器上使用php来运行您需要的任何sql命令,然后从设备导航到php页面。