2012-01-19 11 views
14

Eksperymentuję przy łączeniu aplikacji C# z bazą danych MDF po raz pierwszy i potrzebuję małej pomocy.Jak połączyć się z plikiem bazy danych MDF?

Zrobiłem mały plik bazy danych MDF w Visual Studio 2010, następnie utworzyłem inny projekt i zaimportowałem plik do samego projektu.

Nie próbuję połączyć się z plikiem MDF za pomocą kodu. Oto kod używam:

namespace DBtestApp1 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
     System.Data.SqlClient.SqlConnection con; 
     private void Form1_Load(object sender, EventArgs e) 
     { 
      con = new System.Data.SqlClient.SqlConnection(); 
      con.ConnectionString = "DataSource=.\\SQLEXPRESS; AttachDbFilename =SampleDatabase.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"; 
      con.Open(); 
      MessageBox.Show("Connection opened"); 
      con.Close(); 
      MessageBox.Show("Connection closed"); 
     } 
    } 
} 

Kiedy uruchomić aplikację, pojawia się wyjątek w wierszu gdzie zdefiniowania ciąg połączenia, a wyjątek ten komunikat ma na wierzchu stosu:

System.ArgumentException: Keyword not supported: 'datasource'. 

Czy ktoś może wskazać mi właściwy kierunek?

+0

ten post może pomóc: [? W jaki sposób mogę połączyć się z .mdf (Microsoft SQL Server pliku bazy danych) w prosty projekt WWW] [1] Cheerz [1]: http://stackoverflow.com/questions/173209/how-do-i-connect-to-an-mdf-microsoft-sql-server-database-file-in-a-prosty -web – Helikaon

Odpowiedz

24

Dodaj odstęp między Data Source

con.ConnectionString = @"Data Source=.\SQLEXPRESS; 
          AttachDbFilename=c:\folder\SampleDatabase.mdf; 
          Integrated Security=True; 
          Connect Timeout=30; 
          User Instance=True"; 
+1

I podczas edycji usuń spacje w '; AttachDbFilename = ' –

+1

Próbowałem, ale teraz mam następujący wyjątek:' System.Data.SqlClient.SqlException (0x80131904): Nie powiodła się próba dołączenia automatycznie nazwanej bazy danych dla pliku SampleDatabase.mdf. Istnieje baza danych o tej samej nazwie lub określony plik nie może zostać otwarty lub znajduje się w udziale UNC. " – Ahmad

+1

Musisz podać ścieżkę sampleDatabase.mdf. Spójrz na edytowany post. – adatapost

1
Server=.\SQLExpress;AttachDbFilename=c:\mydbfile.mdf;Database=dbname; Trusted_Connection=Yes; 
+0

Próbowałem tej zmodyfikowanej wersji "' "Server =. \\ SQLExpress; AttachDbFilename = SampleDatabase.mdf; Database = SampleDatabase; Trusted_Connection = Yes "' i ma następujący wyjątek: 'System.Data.SqlClient.SqlException (0x80131904): Wystąpił błąd aktywacji pliku.Fizyczna nazwa pliku" SampleDatabase.mdf "może być niepoprawna. Diagnozować i poprawiać dodatkowe błędy, oraz ponów operację Nie można dołączyć pliku "SampleDatabase.mdf" jako bazy danych "SampleDatabase'." – Ahmad

9
string sqlCon = @"Data Source=.\SQLEXPRESS;" + 
       @"AttachDbFilename=|DataDirectory|\SampleDB.mdf; 
       Integrated Security=True; 
       Connect Timeout=30; 
       User Instance=True"; 
SqlConnection Con = new SqlConnection(sqlCon); 

filepath powinien mieć | DataDirectory | który faktycznie łączy się z "bieżącym katalogiem projektu \ App_Data \" lub "bieżącym katalogiem projektu" i pobieram plik .mdf ..... Umieść plik .mdf w którymkolwiek z tych miejsc i powinien działać w visual studio 2010.I kiedy użyj autonomicznej aplikacji w systemie produkcyjnym, a następnie bieżąca ścieżka, w której znajduje się plik wykonywalny, powinna mieć plik .mdf.

0
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=E:\Samples\MyApp\C#\bin\Debug\Login.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"); 

to działa dla mnie ... Czy istnieje sposób, aby skrócić ścieżkę? jak

SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;AttachDbFilename=\bin\Debug\Login.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True"); 
4

Idź do Eksploratora serwera> Twoja baza danych> prawy przycisk myszy> Właściwości> ConnectionString i skopiować ciąg połączenia i przeszłość skopiowany do connectiongstring kod :)

+0

Jedna z najlepszych odpowiedzi, jakie do tej pory widziałem :) –

3

Visual Studio 2015 ciąg połączenia jest:

"Data Source=(localdb)\MSSQLLocalDB;AttachDbFilename=|DataDirectory|Database1.mdf;Integrated Security=True" 
0

Alternatywne rozwiązanie, w którym można mieć bazę danych w folderze, który ma być dostępny w rozwiązaniu. Że pracował dla mnie:

.ConnectionString(@"Data Source=LocalDB)\MSSQLLocalDB; 
        AttachDbFilename="+AppDomain.CurrentDomain.BaseDirectory+"Folder1\\Folder2\\SampleDatabase.mdf" + "; 
        Integrated Security=True;") 
Powiązane problemy