them4rtin Ответов: 2

Строка подключения к базе данных VS C# SQL не работает для других компьютеров


Привет.
Я создаю приложение, которое использует файл базы данных файлов SQL Server (MDF), расположенный в папке моего проекта.Приложение отлично работает, когда я нахожусь на своем компьютере, но когда я пытаюсь использовать at на другом компьютере, я получаю ошибку, что патч неправильный.Так есть ли какая-то причина, чтобы сделать мою строку подключения автоматически сгенерированной в папку проекта или любую другую причину?

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

Это моя струна:

SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\PC\Desktop\Projects\DApp\Database.mdf;Integrated Security=True;Connect Timeout=30");

2 Ответов

Рейтинг:
20

User 7429338

Вы не должны жестко кодировать путь к базе данных, а поместить его в каталог, предназначенный для пользовательских данных. Взгляните на это эта превосходная статья[^] чтобы помочь выбрать один из них.


Maciej Los

Извините, но главная проблема заключается в том, что эта строка подключения относится к MS SQL Server, установленному на компьютере разработчика. Пожалуйста, смотрите мой ответ.

[no name]

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

Maciej Los

Нет. Я имею в виду, что OP должен включить удаленные подключения к MS SQL Server, чтобы иметь возможность "делиться" базой данных между клиентами.

[no name]

Если на клиентах не установлен MS SQL Server, то да.

Maciej Los

Зачем писать приложение для баз данных, если нет возможности обмениваться данными между клиентами?

them4rtin

Это мой первый раз, когда я забываю об этом тяжело. Кроме того, я думаю об этой жестко закодированной строке . Но я нашел причину, чтобы исправить это. Используя это
(строка con=System.IO.Path.GetDirectoryName(System.Отражение.Собрание.GetExecutingAssembly().Метод getname().Кода) + "\\Базы Данных1.МДФ";)

Рейтинг:
1

Maciej Los

SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=C:\Users\PC\Desktop\Projects\DApp\Database.mdf;Integrated Security=True;Connect Timeout=30");

Он не будет работать, потому что он ссылается на MS SQL server, установленный на компьютере разработчика...

Если вы хотите совместно использовать базу данных в локальной сети, вам необходимо включить удаленные подключения для MS SQL Server. Для получения более подробной информации, пожалуйста, смотрите: Настройка параметра конфигурации сервера удаленного доступа | Microsoft Docs[^]

Тогда вам придется измениться строка подключения[^].

Представьте себе, что вы единственный, кто имеет доступ к этому экземпляру SQL Server до включения удаленных подключений. Другими словами, SQL server должен транслировать свое существование в локальной сети ;)