将下拉框中的选定文本保存到数据库时出现无效列名错误
本文关键字:数据库 无效 错误 保存 文本 | 更新日期: 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;