Abhilash.J.A Ответов: 3

Как я могу получить доступ к базе данных sqlite с другой машины?


Привет,

У меня есть приложение windows WPF. И установлен в сетевой подключенной клиентской машине. Я хочу получить доступ к базе данных SQLite с компьютера администратора, подключенного к сети. База данных, расположенная внутри диска c администратора с именем папки 'qscanDBAttacheds'. Здесь

txtipaddress.Text = "100.85.138.330";
IP-адрес.

Что я уже пробовал:

private void Add_Click(object sender, RoutedEventArgs e)
       {
           myBuilder = new SQLiteConnectionStringBuilder()
           {
               DataSource = @"\\\\" + txtipaddress.Text + @"\qscanDBAttacheds\test.s3db;Version=3;New=False;Compress=True;"
           };

           SQLiteConnection con = new SQLiteConnection(myBuilder.ConnectionString);
           con.Open();
           MessageBox.Show("Success");
       }


Но показанная ошибка "не удается открыть базу данных."

Пожалуйста, помогите мне...

3 Ответов

Рейтинг:
0

Dave Kreskowiak

Sqlite основан только на файлах. Нет никакого способа поговорить с ним по протоколу TCP/IP.

Как и файл базы данных Access, вы должны иметь файл базы данных в общей сетевой папке. Путь обычно будет находиться в пути в формате UNC, например, "\\сервер\папка\параметре folderpath\databasefile".

Проблема в том, что построенная вами строка подключения не является строкой подключения. Это частичная строка. У тебя есть это:

DataSource = @"\\\\" + txtipaddress.Text + @"\qscanDBAttacheds\test.s3db;Version=3;New=False;Compress=True;"

Часть "источник данных" должна быть частью строки, которую вы строите. У тебя этого нет. Тебе это нужно:
string connString = @"Data Source=\\" + txtipaddress.Text + @"\qscanDBAttacheds\test.s3db;Version=3;New=False;Compress=True;"


Abhilash.J.A

@Dave kreskowiak - Спасибо, что ответили мне. Я испробовал твой совет. Потом становится как параметр connectionString "источник данных=\\\\192.168.0.105\\qscanDBAttacheds\\тест.s3db;версия=3;Новый=ложь;сжатие=истина;" но все равно это показывает {"не удается открыть файл базы данных"} ошибки. БД находится внутри другой машины диск c-это путь с именем папки 'qscanDBAttacheds', но оба они подключены к сети. Пожалуйста, помогите мне.

Abhilash.J.A

Я уже разработал приложение WPF для windows с базой данных SQLite. В качестве альтернативы, если это невозможно в Sqlite, я мог бы перенести его в MySql. Может ли мне понадобиться лицензия(платная) для коммерческого распространения MySQL ? Я не могу пользоваться платной одной базой данных. На самом деле, я хотел, чтобы он развертывался на других машинах без необходимости устанавливать mysql индивидуально/Саперно на каждой машине. Пожалуйста, предложите мне способы...

Dave Kreskowiak

SQLite - это настольная база данных, как и Access. На самом деле он не создан для многопользовательских сред.

Чтобы заставить это работать, вы должны понимать, что такое сеть Windows и общий доступ. Без этого вы найдете этот дубль невозможным.

Теперь, если вы действительно хотите, чтобы группа пользователей использовала одну и ту же базу данных, вам нужно перейти на компонент database engine, который поддерживает такие базы данных, как MySQL или SQL Server. Вам не нужно разбираться в файловых ресурсах, но вы должны понимать сеть TCP/IP.

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

Abhilash.J.A

@Dave Kreskowiak Сэр, пожалуйста. Это продукт, то каждый раз нужно устанавливать MSSQL или MYSQL на каждую машину администратора. Как... как это возможно? Пожалуйста, помогите мне... У меня большие неприятности. Или в любом случае, могу ли я развернуть на машинах администратора без необходимости устанавливать mysql индивидуально/Саперно на каждой машине. Пожалуйста, предложите мне способы.

Dave Kreskowiak

Проблема здесь в том, что вы понятия не имеете, что вы делаете с базой данных, и вы не понимаете, что я вам говорю.

Итак, каковы ваши требования к приложениям? Нужно ли устанавливать базу данных на ту же машину, что и приложение, или нет? Или вы пытаетесь заставить несколько экземпляров вашего приложения работать с одной и той же копией базы данных?

Abhilash.J.A

@Dave Kreskowaiak - Sir, I have created 2 .exe wpf windows application. One is for client machine (May be number of client machines) and 2nd one is for Admin machine (only one). And the machines should under common network. The client apps want to sending data to admin machine after admin apps using that client information. This is over all process. With respect to this situation, Now i wanted it to deploy on admin's machines without having to install mysql or mssql individually/saperately on each time. There is no confusion on client application, because client apps can send their data through ip address of admin machine by connectionstring. My database stands in MySql. Alternatively if its not possible in Sqlite i could migrate it in MySQL. And I can not use paid one database. Please suggest me ways.

Dave Kreskowiak

Наконец-то! Объяснение, которое можно использовать! :)

Вы не можете использовать Sqlite для этого. Ну, точнее, это большая заноза в заднице, чтобы сделать это.

Вы можете использовать MySQL. Он просто должен быть установлен на рабочей станции администратора или на выделенном сервере. Оба ваших приложения должны быть преобразованы для использования MySQL вместо Sqlite. Сервер MySQL должен быть настроен для приема соединений TCP/IP. Затем вам нужно изменить строки подключения для работы с MySQL. Вы можете получить формат строки подключения из ConnectionStrings.com[^]

Abhilash.J.A

Сэр, клиент требует, чтобы они хотели развернуть любую базу данных с открытым исходным кодом(mysql или mssql) на машинах администратора без необходимости устанавливать индивидуально/Саперно каждый раз. Могу ли я включить базу данных MySql с приложением в один установщик без необходимости устанавливать mysql на каждой машине? подход типа "предварительные условия в развертывании установщика Windows" ?

Dave Kreskowiak

Что за "слон" я тебе только что сказал?!?! Вы устанавливаете сервер MySQL один раз на машине администратора или на выделенном сервере.

Затем вы должны запустить SQL-скрипт на сервере MySql, чтобы создать базу данных и заполнить любые исходные данные.

Abhilash.J.A

Извините, сэр, клиент не согласен с установкой индивидуально/Саперно сервера MySQL один раз на машине администратора или на выделенном сервере. То на самом деле хотят все в пачку. Я планирую использовать локальную базу данных SQLServer из Visual Studio 2012 для этой ситуации вместо SQLite и MySQL или MSSql. Является ли этот набор локальных баз данных подходящим для текущей ситуации?

Dave Kreskowiak

Хорошо, тогда оберните установщики для MySQL и вашего приложения под a Setup.exe это их запускает.

Что касается LocalDB, то вы не можете его использовать. Он не работает с удаленными подключениями от других машин. Он имеет те же ограничения, что и Sqlite.

Abhilash.J.A

Спасибо, сэр, я попробую этот способ, обернув установщики для MySQL с приложением под a Setup.exe-да. Я не знаю, как включить MySQL(xampp или wamp) внутрь Setup.exe с помощью installshield.

Рейтинг:
0

hansoctantan

В windows вместо использования "\" в качестве разделителя файлов используйте "/".


tweber2012

@hansoctantan я люблю тебя!!!!!!!!!!!!!

hansoctantan

я тоже тебя люблю.. xD

Member 12594087

Снимай шляпу!@hansoctantan. Ты спас мне жизнь.

Member 14128757

Спасибо!

Рейтинг:
0

DIS AK

Использовать такой:

"Источник данных=\тест-ПК\\\\дБ\базы данных mydb.дБ"

Тест-ПК-это сетевое устройство