2011-02-23 70 views
0

我有一個C#Windows窗體應用程序。我推一個按鈕,它應該創建一個表並插入一個值(int)。 我將初始數據庫創建爲服務數據庫(添加新項目>數據>服務數據庫)。無法在SQL Server中創建兩次相同的表

該按鈕的代碼是(輸出遵循其下方):

private void button1_Click(object sender, EventArgs e) 
{ 
    SqlConnection thisConnection = new SqlConnection(Properties.Settings.Default.Database1ConnectionString); 
    SqlCommand nonqueryCommand = thisConnection.CreateCommand(); 

    try 
    { 
     thisConnection.Open(); 

     nonqueryCommand.CommandText = "CREATE TABLE MyTable1 (intColumn int)"; 
     Console.WriteLine(nonqueryCommand.CommandText); 
     Console.WriteLine("Number of Rows Affected is: {0}", nonqueryCommand.ExecuteNonQuery()); 

     nonqueryCommand.CommandText = "INSERT INTO MyTable1 VALUES (99)"; 
     Console.WriteLine(nonqueryCommand.CommandText); 
     Console.WriteLine("Number of Rows Affected is: {0}", 
      nonqueryCommand.ExecuteNonQuery()); 
    } 
    catch (SqlException ex) 
    { 
     Console.WriteLine(ex.ToString()); 
    } 
    finally 
    { 
     thisConnection.Close(); // close connection 
     Console.WriteLine("Connection Closed."); 
    } 
} 

OUTPUT: CREATE TABLE MYTABLE1(intColumn INT) 受影響的行號是:-1 INSERT INTO MYTABLE1 VALUES (99) 受影響的行數是:1 連接已關閉。

服務器資源管理器上沒有任何顯示即使我關閉並重新連接,也沒有附加表。

如果我按下按鈕,使其發出相同的,我再次得到:在服務器資源管理器

System.Data.SqlClient.SqlException (0x80131904): There is already an object named 'MyTable1' in the database. 

,但仍然一無所獲。

+1

有什麼原因令您感到愉快? – 2011-02-23 01:30:22

回答

5

例外告訴你到底發生了什麼事。你的表已經存在。您無法再創建它。如果表已經存在,您需要刪除表。

+0

我認爲他的抱怨是表格似乎不以某種方式存在(他無法用他的SQL客戶端發現它)。 – 2011-02-24 00:07:08

+0

@有限:顯然,他誤解了這一點。 – 2011-02-24 00:18:42

-2

嘗試spceifying的的SqlCommand = CommandType.Text

CommandType屬性還要確保您連接到SQL的同一個實例。你可以通過在打開連接之後斷開連接(因爲它是在你知道它工作的時候)並尋找服務器名來獲得你的代碼。

請注意,您可以在一臺計算機上安裝多個SQL實例...因此您可以在正確的服務器(如localhost)上工作,但不能訪問正確的實例(如SQLEXPRESS而不是MSSQLSERVER)。

+0

-1:這將如何幫助?第一次點擊按鈕時它正確執行。 – 2011-02-23 01:38:03

0

服務器瀏覽器上沒有任何顯示儘管沒有附加表格,即使我關閉並重新連接。

當你執行程序時,Visual Studio的項目管理自動部署(複製數據庫).MDF數據庫文件在部署文件夾調試\ BIN。我覺得你的代碼使用它位於調試\ BIN文件夾(這將在服務器資源管理器來未顯示)和數據庫服務器資源管理器顯示了位於項目文件夾的根目錄數據庫(.MDF),它是空。

+0

那麼你如何檢查Databse在做什麼? – Richard 2011-02-23 01:57:15

+0

@Richard:我從你的問題描述中猜測出來。請驗證您的連接字符串,我確信您的app.config文件中的connectionString使用| DataDirectory |替代。 – adatapost 2011-02-23 02:15:30

+0

Data Source =。\ SQLEXPRESS; AttachDbFilename = | DataDirectory | \ WikiTest。mdf;集成安全性= True;用戶實例= True – Richard 2011-02-23 23:54:28