0

使用平台: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();
4

2 回答 2

2

我相信您的问题是您使用的是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 将它们视为列。

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

于 2012-04-06T09:47:15.907 回答
0

@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;
于 2012-04-06T10:21:31.027 回答