2014-10-01 5 views
1

Я разработал приложение win QT, которое использует базу данных SQLIte. Копия базы данных находится на каждом сайте.QSQLDatabase (используя SQLite) занимает много времени, чтобы открыть базу данных

На одном сайте предположим, что сайт «BOB1» работает отлично, без каких-либо проблем. Но когда мы пытаемся использовать его на другом сайте, скажем, что «BOB2» занимает много времени, чтобы открыть соединение с базой данных (около 2000 миллисекунд).

Я думал, что, возможно, есть сетевая проблема, поэтому они попытались использовать сервер сайта «BOB1» в качестве своего сервера, который отлично работает. Но когда я попытался использовать сервер сайта «BOB2» с сайта «BOB1», у меня такая же проблема. Поэтому я думал, что это не проблема сети.

Еще одна вещь, которая, на мой взгляд, заключалась в том, что, возможно, проблема разрешения DNS. Но когда я попытался выполнить ping-сервер с использованием IP и hostname, время ответа будет таким же.

Любая идея или указатель, что может быть проблемой.

PS: Путь к серверу + база данных указан в значении setDatabasePath(), используя переменные enviornment.

+0

Что вы подразумеваете под сервером? SQLite - это серверная база данных, это просто файл, который вы открываете с диска (с использованием драйвера SQL). – Googie

+0

Я хочу сказать, что файл SQLite размещен на сервере на каждом сайте – user1703942

+0

Но вы сказали, что вы указываете файл _Server + database_ в файле setDaatabasePath() - так вы указываете только файл или вы указываете какой-то сервер здесь как Что ж? Если сервер тоже, то какой сервер? – Googie

ответ

0

Рассмотрите возможность копирования базы данных на локальный компьютер (например, временная папка, если временная или другое подходящее место, если она постоянна). Вы можете безопасно использовать либо копию файла, или рассмотреть возможность использования Qt резервное копирование API, чтобы гарантировать, что передача происходит успешно (плюс вы получите возможность обратной связи прогресса)

https://sqlite.org/backup.html

Вы могли бы даже «резервное копирование» файл из удаленный сервер в память, если файл небольшой, и вы говорите, что читаете только?

Вы можете увидеть пример кода here о том, как импортировать sqlite DB в Qt QSqlDatabase. Обратите внимание, что когда вы это делаете, вы хотите убедиться, что версия встроенного API sqlite, которую вы используете, такая же, как и скомпилированная в Qt, или вы можете получать сообщения об ошибках из sqlite или Qt.