将下拉框中的选定文本保存到数据库时出现无效列名错误

本文关键字:数据库 无效 错误 保存 文本 | 更新日期: 2023-09-27 18:30:20

使用的平台:Microsoft Visual Studio 2010 (C#)
数据库 : SQL Server 2008 R2 Express

我想从下拉列表中获取文本并将其放入数据库表中。我收到错误说

列名"类型"无效。

虽然列存在于数据库表中。

da.InsertCommand = new SqlCommand("insert into tblProductMaster ([Name],[Type],[Height],[Width],[Length],[Price]) values( @Name , @Type , @Height , @Width , @Length , @Price )", con);
da.InsertCommand.Parameters.Add("@Name", SqlDbType.VarChar).Value = txtName.Text;
da.InsertCommand.Parameters.Add("@Type", SqlDbType.VarChar, 10).Value = ddlType.SelectedItem.ToString();
da.InsertCommand.Parameters.Add("@Height", SqlDbType.Float).Value = float.Parse(txtHeight.Text);
da.InsertCommand.Parameters.Add("@Width", SqlDbType.Float).Value = float.Parse(txtWidth.Text);
da.InsertCommand.Parameters.Add("@Length", SqlDbType.Float).Value = float.Parse(txtLength.Text);
da.InsertCommand.Parameters.Add("@Price", SqlDbType.SmallMoney).Value = int.Parse(txtPrice.Text);
da.InsertCommand.ExecuteNonQuery();

将下拉框中的选定文本保存到数据库时出现无效列名错误

我相信

您的问题是您使用的是 SQL Server 保留字("大小"),并且您没有将其正确封装在 INSERT 语句中。

试试这个:

da.InsertCommand = new SqlCommand("insert into tblProductMaster ([Name], [Size], [Height], [Width], [Length], [Price]) values(@Name, @Size, @Height, @Width, @Length, @Price)", con);

请注意列名称周围的[]...这将告诉 SQL Server 将它们视为列。

警告:如果可以的话,我强烈建议您更改这些列名称。 使用任何产品的保留字都是非常糟糕的数据库设计,并且将继续给您带来问题和/或额外的工作。 最好早点修复它。

@Sagar试试这个

string strCmd = @"insert into tblProductMaster ([Name], [Size], [Height], [Width], [Length], [Price]) values(@Name, @Size, @Height, @Width, @Length, @Price)";  

然后

SqlCommand cmd = new SqlCommand(strCmd, con);  
cmd.Parameters.Add("@Size", SqlDbType.VarChar, 10, ddlSize.SelectedItem.Value.ToString());  
da.InsertCommand = cmd;