2016-04-27 86 views
2

我用的SqlCommand創建表的問題。代碼如下的SqlCommand不能創建表

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

我把代碼放在Main函數中並運行它。沒有錯誤,數據庫可以打開。但是,當我檢查數據庫時,沒有創建表。任何人都可以幫助看看這裏有什麼問題嗎?謝謝。

謝謝大家。這個問題已經解決了。當我創建Test.mdf時,我實際上是在項目的Database文件夾中創建的。當我雙擊Test.mdf時,它被鏈接到Visual Studio中的服務器資源管理器。然後,當我將屬性更改爲始終複製時,Test.mdf將被複制到bin/Debug/Database /中。當我用Path.GetDirectoryName(Assembly.GetExecutingAssembly()的位置),我其實是操作一個以斌/調試/,而不是一個項目文件夾。因此,它看起來像表沒有創建。所以現在我將bin/Debug/Database中的Test.mdf鏈接到服務器資源管理器,我可以看到創建了新表。

+0

你有沒有嘗試過調試代碼?如果是的話,你有什麼異常?如果是有什麼異常 –

+2

一個常見的錯誤使用獨立的數據庫文件時是被混淆的文件,你正在尋找中。是否在一個源項目看?或者你在看'bin/debug' /'bin/release'中的副本嗎?或...你在哪裏看?你用什麼證據來說它不會創建表格,基本上?請注意,如果您再次構建並運行該項目,則可能再次覆蓋該文件... –

+0

您確定在此位置有文件:bin \\ Debug \\ Database \\ Test.mdf –

回答

0

是的,你已經創建了DB項目,將不會在SQL Server Management Studio中可用,因爲這是本地應用程序數據庫中。 .mdf文件位置對於SSMS中的數據庫是不同的。