2017-02-19 4 views
1

Gibt es einen Weg/Code, den ich verwenden kann, der ich meine Verbindungszeichenfolge nicht jedes Mal ändern muss, wenn ich mein Projekt auf einen anderen Computer verschiebe?Datenbankverbindung in C#

2 Computer mit unterschiedlichen Servernamen, aber mit der gleichen Datenbank verwendet.

SC1:

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

PC2:

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

versucht, mit: Server = (localdb)

Update: verwendet localhost und (lokal) mit PC1 fein gearbeitet, aber diese gewonnen arbeite nicht mit PC2 see img

+1

Config-Datei? Registrierungswert? So funktionieren 99% der Anwendungen. – Rob

+1

Verwenden Sie localhost anstelle des PC-Namens. –

Antwort

2

See here.

Dies könnte die Lösung sein, nach der Sie suchen. Verwenden Sie den Hostnamen und hängen Sie ihn an die Verbindungszeichenfolge an.

Ich glaube, Sie auch in der Lage sein können server=localhost;

+0

versuchte mit 'localhost' für PC1 .. funktionierte gut .. aber mit PC2 habe ich nicht. Ich bekomme diesen Fehler. [siehe img] (http://imgur.com/a/544qZ) –

+0

Haben Sie versucht, den Hostnamen anzuhängen?Der Hostname sollte kopieren, was Sie oben haben, wie zum Beispiel "Server = DESKTOP // SEGUERRA;" Wenn nicht, drucken Sie es aus und fügen Sie es in die Kommentare ein. Wir werden es herausfinden. =) Auf eine Randnotiz sollten Sie Ihren Code in einen Versuch {} catch (SQLException e) {} wickeln, so dass das Programm nicht explodiert, wenn Sie versuchen, eine Verbindung herzustellen, und es keine Verbindung gibt. – sheepiiHD

0

Es gibt wahrscheinlich viele Bibliotheken dieses Problem zu lösen, aber der einfachste Weg, Sie Zwischen ist innerhalb der Software identifizieren tun können, die Software, die Computer auf ausgeführt wird:

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;"; 
    } 
} 

können Sie auch dynamischer machen es, indem sie es aus der web.config/app.config Lesen:

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

Thi s macht es dynamischer und Sie können der web.config/app.config einfach eine neue Verbindungszeichenfolge hinzufügen, sobald sie in einer neuen Umgebung ausgeführt werden muss.

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

Ich bin nicht sicher, ob dies für Sie arbeitet, aber wo ich alle Arbeit hat ihre eigene lokale Instanz von SQL Server und jeder Entwickler wird mit dem db auf localhost. Wir lösen dieses Problem, indem wir die Datenbank als Punkt (localhost) referenzieren.

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

Diese Lösung funktioniert nur, wenn alle Entwickler ihre Datenbank als Standardinstanz installiert haben.

0

Hier finden Sie alle Verbindungsoptionen für SQL Server-Verbindungen.

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;