2009-07-03 55 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]) - 这是有利的,因为发生更改并且不会影响现有对“名字”的绑定,这意味着只能在一个地方进行更改。