我有一个使用 Visual Studio 2010 和 ASP.NET Web 窗体制作的项目。在其中,我有一个绑定到 MySQL 表的 GridView 控件。它在控件中显示我的表没有问题,但是在我启用控件上的编辑后,我发现当字段中有空格时更新表中的字段时出现问题。
例如,我定义了下表:
CREATE TABLE `test_table` (
`oid` int(11) unsigned NOT NULL AUTO_INCREMENT,
`first_column` varchar(20) NOT NULL,
`second_column` varchar(20) NOT NULL,
`third column` varchar(20) NOT NULL,
PRIMARY KEY (`oid`)
)
请注意,其中一个字段的名称中有一个空格。这是我遇到问题的地方。在我的页面中,我有以下代码:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False"
DataKeyNames="oid" DataSourceID="SqlDataSource1">
<Columns>
<asp:CommandField ShowEditButton="True" />
<asp:BoundField DataField="oid" HeaderText="oid" ReadOnly="True"
SortExpression="oid" />
<asp:BoundField DataField="first_column" HeaderText="first_column"
SortExpression="first_column" />
<asp:BoundField DataField="second_column" HeaderText="second_column"
SortExpression="second_column" />
<asp:BoundField DataField="third column" HeaderText="third column"
SortExpression="third column" />
</Columns>
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:testcon %>"
ProviderName="<%$ ConnectionStrings:testcon.ProviderName %>"
SelectCommand="select * from test_table" UpdateCommand="update `test_table` set
`first_column` = @first_column,
`second_column` = @second_column
where
`oid` = @oid"></asp:SqlDataSource>
通过 UpdateCommand,我可以很好地更新此表上的 first_column 和 second_column。现在我希望它以third column
相同的方式更新,但它不起作用。如果我将查询更改为:
update `test_table` set
`first_column` = @first_column,
`second_column` = @second_column,
`third column` = @third column
where
`oid` = @oid
查询运行时它会给我这个错误:
Parameter '@third' must be defined.
我也尝试过@third\ column、@{third column}、@[third column]、{@third column} - 显然这些都不起作用。因此我的问题是:我应该为我的更新查询添加什么才能更新其中有空格的 MySQL 字段?