2016-02-09 69 views
1

我試圖從C#Winforms插入到SQL Server數據庫的costumer的信息,雖然當我點擊添加按鈕時沒有錯誤顯示,沒有數據正在被添加到數據庫中。INSERT語句不插入SQL Server數據庫使用C#Winform

下面是添加函數的代碼:

private void acceptButton_Click(object sender, EventArgs e) 
{ 
     SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings["myConnectionString"].ConnectionString); 

     String query = "INSERT INTO Costumer(Name, Address, Phone, Note) VALUES(@name, @address, @phone, @note)"; 

     SqlCommand command = new SqlCommand(query, con); 


     command.Parameters.AddWithValue("@name", nameTextBox.Text); 
     command.Parameters.AddWithValue("@address", addressTextBox.Text); 
     command.Parameters.AddWithValue("@phone", phoneTextBox.Text); 
     command.Parameters.AddWithValue("@note", noteTextBox.Text); 

     try 
     { 
      con.Open(); 
      command.ExecuteNonQuery(); 
      con.Close(); 
      this.Close(); 
     } 
     catch (SqlException exception) 
     { 
      MessageBox.Show(exception.Message.ToString(), "Error Message"); 
     } 
    } 

這裏是負荷消費表

CREATE TABLE [dbo].[Costumer] (
    [CostumerId] INT   IDENTITY (1, 1) NOT NULL, 
    [Name]  VARCHAR (50) NULL, 
    [Address] VARCHAR (50) NULL, 
    [Phone]  VARCHAR (16) NULL, 
    [Note]  VARCHAR (250) NULL, 
    PRIMARY KEY CLUSTERED ([CostumerId] ASC) 
); 

不知道在哪裏的問題是這裏的設計。

編輯:我在winform項目中使用的連接字符串。

這裏是連接字符串:

<add name="myConnectionString" connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\database.mdf;Integrated Security=True;Connect Timeout=30;MultipleActiveResultSets=True;" providerName="System.Data.SqlClient"/> 

我已經使用了相同的連接字符串幾個SELECT查詢和他們工作得很好。

+0

能否請您*我們展示*連接字符串你在用嗎? –

+1

'command.ExecuteNonQuery'返回成功執行的行數。如果它不止一個,那麼你可能正在查看錯誤的數據庫。 – LarsTech

+0

用連接字符串編輯問題。 – Alfasatwi

回答

3

這是一種常見的情況。在項目文件之間列出名爲database.mdf的數據庫文件,並且如果查看該文件的屬性,則會注意到屬性Copy To Output directory設置爲Copy Always

現在,在WinForms應用程序中,Output Directory是您的主項目文件夾下的文件夾BIN \ DEBUG(或RELEASE和x86變體)。
連接字符串中使用的DataDirectory substitution string正好指向此文件夾。
因此,您執行的每個插入操作都會將記錄添加到該文件夾​​中的數據庫。

當然,如果你沒有看到添加的記錄,那麼higly可能是您正在尋找在位於在沒有插入已經被你的代碼所做的項目文件夾中的數據庫....

要解決的屬性更改爲Copy If NewerCopy Never,確保用於查看數據庫表中的工具使用指向數據庫中BIN \ Debug文件夾中的ConnectionString

+1

感謝史蒂夫的答案,這正是我無法讀取新添加的行的原因。將連接字符串更改爲BIN \ DEBUG文件夾後,所有操作都像魅力一樣。 – Alfasatwi