2009-07-03 58 views
0

我有一個SqlDataSource連接,其參數,如理解參數

INSERT INTO [user_info] ([firstname], [lastname], [age]) VALUES (@firstname, @lastname, @age) 

現在我明白@firstName插入參數設置,@LastName,@age是我的參數設置他們的價值。

我用formview綁定它,它自動將insertitemtemplate中的文本框與列的名字,姓氏和年齡分別綁定。例如FirstName文本框具有以下屬性。

<asp:TextBox ID="firstnameTextBox" runat="server" Text='<%# Bind("firstname") %>' /> 

現在我的疑問是,@firstname變量如何與名字字段綁定。我沒有明確地在任何地方使用綁定。明天再說我想插入查詢重命名爲

INSERT INTO [user_info] ([firstname], [lastname], [age]) VALUES (@fn, @ln, @ag) 

這裏和所有我將不得不做出改變序與姓等綁定@fn。

希望我的問題很清楚。

+0

綁定是.net本身生成的函數,當我添加控件時,它是由它自己生成的。 – 2009-07-03 10:22:41

回答

0

簡答:更改參數名稱不會造成連鎖效應。改變你的列名將會。

詳細答案:在這種情況下綁定(和評估)的數據綁定適用於SQL表的列名,而不是參數名。如果您要開始使用帶有@fn的第二條INSERT語句,您的綁定將繼續使用「firstname」而無需更改。

但是,如果你更新你的表格,並改名爲「姓名」一欄爲「FN」這不再是這種情況,你現在有兩個選擇:

  1. 更新所有綁定()調用使用「 fn「而不是」firstname「 - 如果它發生在許多地方,這將需要許多改變。
  2. 將您的SELECT語句(或存儲過程)更新爲別名fn列作爲名(例如,SELECT [fn]作爲名,...其他列... FROM [user_info]) - 這是有利的,因爲發生更改並且不會影響現有對「名字」的綁定,這意味着只能在一個地方進行更改。