2017-02-19 5 views
1

Есть ли способ/код, в котором я могу использовать это, не потребует, чтобы я менял строку подключения каждый раз, когда я переношу свой проект на другой компьютер?Подключение к базе данных в C#

использовал 2 компьютера с разными именами серверов, но с той же базой данных.

PC1:

static string ConnStr = "Server=DESKTOP-Q0BI1S3;Database=ISPROJ2;Trusted_Connection=True;"; 

PC2:

static string ConnStr = "Server=DESKTOP//SEGUERRA;Database=ISPROJ2;Trusted_Connection=True;"; 

попытался с помощью: Server = (LocalDB)

Update: используется локальный и (местный) с PC1 работал отлично, но они выиграли не работает с PC2 see img

+1

конфигурационный файл? значение реестра? Так работает 99% приложений. – Rob

+1

Используйте localhost вместо имени ПК. –

ответ

2

See here.

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

Я также верю, что вы можете быть в состоянии использовать server=localhost;

+0

пробовал использовать «localhost» для ПК1 .. работал нормально .. но с PC2 я этого не делал. Я получаю эту ошибку. [см. img] (http://imgur.com/a/544qZ) –

+0

Вы пытались добавить имя хоста?Имя хоста должно копировать то, что у вас выше, например «Server = DESKTOP // SEGUERRA», если нет, распечатайте его и вставьте в комментарии. Мы выясним это. =) На боковой ноте вы должны обернуть свой код в try {} catch (SQLException e) {} таким образом, что программа не взорвется, когда вы пытаетесь подключиться, и к ней нечего подключать. – sheepiiHD

0

Есть, вероятно, много библиотек, чтобы решить это, но самый простой способ, которым Вы можете сделать промежуточным это в программном обеспечении определить, какой компьютер программного обеспечения работает на:

static string GetConnectionString() 
{ 
    switch(System.Environment.MachineName) 
    { 
     case "PC1": //TODO:Change this to the actual machine name! 
      return "Server=DESKTOP-Q0BI1S3;Database=ISPROJ2;Trusted_Connection=True;";    
     case "PC1": //TODO:Change this to the actual machine name! 
      return "Server=DESKTOP//SEGUERRA;Database=ISPROJ2;Trusted_Connection=True;"; 
    } 
} 

Вы можете также сделать его более динамичным, читая его из web.config/app.config:

static string GetConnectionString() 
{ 
    return ConfigurationManager.AppSettings["ConnectionString_" + System.Environment.MachineName]; 
} 

Thi s делает его более динамичным, и вы можете просто добавить новую строку подключения в файл web.config/app.config, как только она будет запущена в новой среде.

<appsettings> 
    <add key="connectionstring_pc1" value="[pc1connectionstringhere!]"/> 
    <add key="connectionstring_pc2" value="[pc2connectionstringhere!]"/> 
</appsettings> 
3

Я не уверен, если это будет работать для вас, но там, где я работаю каждый имеет свой собственный локальный экземпляр SQL-сервера и каждый разработчик используют БД на локальном хосте. Мы решаем эту проблему, ссылаясь на базу данных как точку (localhost).

"Server=.;Database=ISPROJ2;Trusted_Connection=True;" 

Это решение работает только в том случае, если все разработчики имеют свой DB в качестве экземпляра по умолчанию.

0

Здесь вы найдете все параметры строки подключения SQL Server.

https://www.connectionstrings.com/sql-server/

Standard Security 
Server=myServerAddress;Database=myDataBase;User Id=myUsername; 
Password=myPassword; 

Trusted Connection 
Server=myServerAddress;Database=myDataBase;Trusted_Connection=True; 

Connection to a SQL Server instance 
The server/instance name syntax used in the server option is the same for all SQL Server connection strings. 

Server=myServerName\myInstanceName;Database=myDataBase;User Id=myUsername; 
Password=myPassword; 
Смежные вопросы