INSERT 语句不会插入 SQL 使用 C# Winform 的服务器数据库
INSERT Statement Doesn't Insert into SQL Server Database working with C# Winform
我正在尝试从 C# Winforms 将客户的信息插入到 SQL 服务器数据库中,尽管当我单击“添加”按钮时没有显示任何错误,但没有数据被添加到数据库中。
添加函数的代码如下:
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");
}
}
这是Costumer的设计图table
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 查询使用了相同的连接字符串,它们工作正常。
这是一种常见的情况。您在项目文件之间列出了名为 database.mdf
的数据库文件,如果查看该文件的属性,您会注意到 属性 Copy To Output directory
设置为 Copy Always
。
现在,在 WinForms 应用程序中,Output Directory
是主项目文件夹下的文件夹 BIN\DEBUG(或 RELEASE 和 x86 变体)。
您的连接字符串中使用的 DataDirectory substitution string 正好指向此文件夹。
因此,您执行的每次插入都会将记录添加到该文件夹中的数据库中。
当然,如果您没有看到添加的记录,那么您很可能正在查看位于您的项目文件夹中的数据库,其中您的代码没有插入....
要修复,请将 属性 更改为 Copy If Newer
或 Copy Never
并确保用于查看数据库的工具 table 使用指向的连接字符串BIN\DEBUG 文件夹
中的数据库
我正在尝试从 C# Winforms 将客户的信息插入到 SQL 服务器数据库中,尽管当我单击“添加”按钮时没有显示任何错误,但没有数据被添加到数据库中。
添加函数的代码如下:
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");
}
}
这是Costumer的设计图table
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 查询使用了相同的连接字符串,它们工作正常。
这是一种常见的情况。您在项目文件之间列出了名为 database.mdf
的数据库文件,如果查看该文件的属性,您会注意到 属性 Copy To Output directory
设置为 Copy Always
。
现在,在 WinForms 应用程序中,Output Directory
是主项目文件夹下的文件夹 BIN\DEBUG(或 RELEASE 和 x86 变体)。
您的连接字符串中使用的 DataDirectory substitution string 正好指向此文件夹。
因此,您执行的每次插入都会将记录添加到该文件夹中的数据库中。
当然,如果您没有看到添加的记录,那么您很可能正在查看位于您的项目文件夹中的数据库,其中您的代码没有插入....
要修复,请将 属性 更改为 Copy If Newer
或 Copy Never
并确保用于查看数据库的工具 table 使用指向的连接字符串BIN\DEBUG 文件夹