2016-02-09 68 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