2016-04-27 13 views
2

Ich habe ein Problem mit dem Erstellen einer Tabelle mit SqlCommand. Der Code ist wie folgtSqlCommand kann keine Tabelle erstellen

 string cs = @"Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename="+ Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\Database\Test.mdf;Integrated Security=True; Database=Test"; 
     SqlConnection sc = new SqlConnection(cs); 
     sc.Open(); 
     //SqlCommand cmd = new SqlCommand(); 
     try 
     { 
      using (SqlCommand command = new SqlCommand(
      "CREATE TABLE Dogs1 (Weight INT, Name TEXT, Breed TEXT)", sc)) 
      { 
       Console.WriteLine(command.ExecuteNonQuery()); 
      } 
     } 
     catch 
     { 
      Console.WriteLine("Table not created."); 
     } 

Ich legte den Code in Main-Funktion und führen Sie es aus. Es gibt keinen Fehler und die Datenbank kann geöffnet werden. Wenn ich jedoch die Datenbank überprüfe, wird keine Tabelle erstellt. Kann jemand helfen zu sehen, was hier falsch ist? Vielen Dank.

Vielen Dank an alle. Dieses Problem wurde gelöst. Als ich Test.mdf erstellt habe, habe ich mich tatsächlich im Ordner Datenbank im Projekt angelegt. Wenn ich auf Test.mdf doppelklickte, wurde es mit dem Server-Explorer in Visual Studio verknüpft. Wenn ich dann die Eigenschaft auf Immer kopieren änderte, wird die Datei Test.mdf nach bin/Debug/Datenbank/kopiert. Als ich Path.GetDirectoryName (Assembly.GetExecutingAssembly() .Location) verwendet habe, habe ich tatsächlich den in bin/Debug/und nicht den im Projektordner ausgeführt. Daher sieht es so aus, als ob die Tabelle nicht erstellt wurde. So, jetzt habe ich die Test.mdf in bin/Debug/Datenbank mit dem Server-Explorer verbunden, kann ich sehen, neue Tabellen erstellt werden.

+0

Haben Sie versucht, Ihren Code zu debuggen? Wenn ja, haben Sie eine Ausnahme? Wenn ja, was ist die Ausnahme –

+2

Ein häufiger Fehler bei der Verwendung von eigenständigen Datenbankdateien ist zu verwechseln, welche Datei Sie suchen. Suchen Sie in dem Quellprojekt nach? oder sehen Sie sich die Kopie in 'bin/debug' /' bin/release' an? oder ... wo suchst du? Welchen Beweis verwendest du, um zu sagen, dass die Tabelle im Grunde nicht erstellt wurde? Wenn Sie das Projekt erneut erstellen und ausführen, können Sie die Datei erneut überschrieben haben. –

+0

Und Sie sind sicher, dass Sie die Datei an diesem Speicherort haben: bin \\ Debug \\ Database \\ Test.mdf –

Antwort

0

Ja, Sie haben die Datenbank in Ihrem Projekt erstellt, die in SQL Server Management Studio nicht verfügbar ist, da dies die lokale Anwendungsdatenbank ist. Der Speicherort der .mdf-Datei unterscheidet sich für die DB in SSMS.

Verwandte Themen