JDBC SQLite как получить доступ к базе данных из localhost [duplicate]

Уже занятая тема, но из того, что я прочитал здесь, следующее помогло мне понять, как она работает внутри:

def bar(a=[]):
     print id(a)
     a = a + [1]
     print id(a)
     return a

>>> bar()
4484370232
4484524224
[1]
>>> bar()
4484370232
4484524152
[1]
>>> bar()
4484370232 # Never change, this is 'class property' of the function
4484523720 # Always a new object 
[1]
>>> id(bar.func_defaults[0])
4484370232
4
задан Gandalf 2 December 2011 в 16:13
поделиться

7 ответов

sqlite - это база данных документов, означающая, что она в значительной степени похожа на плоский файловый хранилище ваших данных с самым минимальным движком базы данных сверху, поэтому она равна 300kb. Что вы можете сделать в качестве решения, это скопировать db из вашего удаленного местоположения в ваше местоположение через ftp или получить доступ к нему, назначив ему сетевое расположение. Будьте осторожны, хотя только один пользователь может писать в sqlite за раз.

2
ответ дан Al Katawazi 21 August 2018 в 13:35
поделиться
  • 1
    «База данных документов» в этом случае не следует путать с базами данных без SQL, такими как MongoDB и т. д. SQLite является реляционной базой данных. Я думаю, что здесь подразумевается, что данные SQLite хранятся в одном файле, а на нем нет дополнительного сервера базы данных, чтобы сделать его доступным, поэтому простое копирование файла из одного места в другое достаточно для перемещения и создания доступную на другой машине. – jefflunt 15 August 2012 в 18:03

Вы можете использовать php на сервере для запуска любых команд sql, которые вам нужны, и просто перейти к php-странице с устройства.

-1
ответ дан Darren 21 August 2018 в 13:35
поделиться

вы можете рассмотреть возможность переключения на PostgreSQL вместо SQLite, манипуляции с базой данных очень похожи. Небольшие различия в обработке первичных ключей и т. Д. Вы можете использовать Google. Например, в инструкции INSERT вы должны передать NULL в SQLite в качестве первичного ключа, а в Postgre вы передадите его как DEFAULT (если вы хотите, чтобы база данных создала для вас ключ).

Например, в Python3 различие в коде, о котором я знаю, это то, что PostgreSQL позволяет удаленно подключаться и что исключение синтаксиса SQL-инъекций несколько отличается, поскольку метод SQLite3 будет с ?, а PostgreSQL9.5 - с %s

Переключение на Postgre предоставит вам возможность удаленного подключения и станет определенным шагом от использования локальной базы данных (которая предназначена только для приложений с малой и средней пропускной способностью).

-1
ответ дан George Mogilevsky 21 August 2018 в 13:35
поделиться

SQLite не является сетевой базой данных, поэтому у нее нет встроенных в нее возможностей сетевого подключения.

Вам нужно либо:

  • Сделать SQLite DB доступен на сетевом доступном диске общего доступа ИЛИ
  • Запись / поиск существующего сетевого сервера / веб-службы для него

Веб-приложение является, по существу, веб-службой. Если вы используете веб-приложение поверх этого БД, просто выставляйте определенные уровни доступа к БД только админам.

Не рекомендуется делать это, потому что несколько потоков / клиентов / и т. Д. доступ к SQLite DB одновременно может привести к проблемам параллелизма очень быстро.

7
ответ дан jefflunt 21 August 2018 в 13:35
поделиться
  • 1
    Он не работает хорошо ... Лучшее решение для веб-приложения. – mr_app 15 August 2012 в 10:08

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;"
0
ответ дан Mohd Zaid 21 August 2018 в 13:35
поделиться

Navicat может подключаться через SSH к удаленной базе данных sqlite.

Для меньшего проекта im с использованием phpliteadmin

3
ответ дан mr_app 21 August 2018 в 13:35
поделиться

Вы не можете напрямую обращаться к базе данных sqlite удаленно. Если вам нужно поделиться им, вам нужно будет разработать веб-сервис и поговорить с веб-службой, а не с базой данных из вашего приложения Qt.

Есть несколько инструментов, которые действуют как веб-сервис для таких вещей, как что, например этот сайт имеет некоторые ссылки.

1
ответ дан Tim Meyer 21 August 2018 в 13:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: