2012-06-06 15 views
0

我有一個項目,我正在使用Visual Studio 2010和ASP.NET Web窗體。其中,我有一個綁定到MySQL表的GridView控件。它在控件中顯示我的表沒有問題,但是在啓用了對控件的編輯後,我發現在字段中有空格時更新表中的字段時出現問題。使用MySQL的ASP.NET GridView控件 - 使用參數空格的UpdateQuery

例如,我有以下表中定義:

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> 

通過更新命令的方式,我能夠在這個表上就好了更新和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 \柱,@ {第三列},@ [第三列],{@第三列] - 顯然這些工作都沒有。因此我的問題是:我爲更新查詢所做的更新能夠更新我的MySQL字段,該字段中有一個空格?

+0

'@third column'中有空格 – codingbiz

+0

謝謝@tunmise fasipe。這是我的問題的重點。我試圖引用同名的字段,其中合法地包含一個空格。 – endoalir

+0

也許你可以改變你的模式到'third_column'以與其他列保持一致。標準變量不應該有空格 – codingbiz

回答

0

您應該能夠通過更新可以使用任何參數名稱參數

http://www.asp.net/web-forms/tutorials/data-access/accessing-the-database-directly-from-an-aspnet-page/inserting-updating-and-deleting-data-with-the-sqldatasource-vb

<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"> 

    <UpdateParameters> 
    <asp:Parameter Name="first_column" Type="String" /> 
    <asp:Parameter Name="second_column" Type="String" /> 
    <asp:Parameter Name="third_column" Type="String" /> 
    </UpdateParameters> 
</asp:SqlDataSource> 
0

解決這個情況是在填充Select語句提供一個別名到列網格視圖。例如:

SELECT ..., [third column] AS third_column, ... 
FROM ... 

然後您可以使用@third_column作爲參數名稱。由於我預計您可能希望使用空格而不是下劃線顯示列標題,因此可以將此字段的HeaderText屬性設置爲所需的值。

使用這種方法,GridView的Update命令將很容易映射到相應的參數(因爲它們具有相同的名稱),並且不必更改數據庫中的定義。我還建議使用SQLServer Profiler來查看在服務器中執行的實際T-SQL代碼。

祝你好運!

相關問題