知识大纲
一、SQLServer数据库开发
1、T-SQL编程
1变量
局部变量
局部变量是用户可自定义的变量,它的作用范围仅在程序内部。在程序中通常用来储存从表中查询到的数据,或当作程序执行过程中暂存变量使用。局部变量必须以“@”开头,而且必须先用DECLARE命令说明后才可使用。其说明形式如下:
DECLARE @变量名变量类型 [@变量名变量类型…]
例如:DECLARE @id char(10) —–声明一个长度为10的字符变量
全局变量
全局变量不是由用户的程序定义的,它们是在服务器级定应义的。只能使用预先说明及定义的变局变量。引用全局变量时,必须以“@@”开头。局部变量的名称不能与全局变量的名称相同、否则会在应用中出错。
常用全局变量
@@ERROR | 最后一个T-SQL错误的错误号 |
@@IDENTITY | 最后一次插入的标识值 |
@@LANGUAGE | 当前使用的语言的名称 |
@@MAX_CONNECTIONS | 可以创建的同时连接的最大数目 |
@@ROWCOUNT | 受上一个SQL语句影响的行数 |
@@SERVERNAME | 本地服务器的名称 |
@@TRANSCOUNT | 当前连接打开的事务数 |
@@VERSION | SQL Server的版本信息 |
例如: select @@VERSION as w --返回SQL服务器安装的日期、版本和处理器类型。2输出语句
使用print或select输出
Print/Select 变量或表达式
3控制语句
在c语言中,逻辑控制语句是if-else,switch,for,while,在sql编程中,也大相径庭,这里的逻辑控制语句分别是:if-else,while,case-end语句
if-else语句
语法格式为:
if(条件)
begin
语句1
语句2
end
else
begin
语句1
语句2
end
注意:begin…end相当于c语言中的大括号,有多条语句才使用begin…end,相当于begin…end之间的语句就是一个语句块
看个实例更容易理解,例:
declare @myavg float
select @myavg=avg(writexam) from stumake
print '本班平均分' + convert(varchar(5),@myavg)
if(@myavg>70)
begin
print '前三的成绩为'
select top 3 * from stumake order by writexam dese
end
else
begin
print '后三名的成绩为'
select top 3 * from stumake order by writexam asc
end
在使用T-SQL编程时,可以切换视图来查看结果,工具>选项>查询结果>常规>显示结果的默认方式>以文本格式显示结果,查看效果更好
while循环语句
语法格式为:
while(条件)
begin
语句1
语句2
break
end
注意:break是表示结束循环,与c语言中的辅助控制语句break,continue类似
看个实例:
declare @n int
where(1=1) --条件永远成立
begin
select @n=count(*) from stuMarks
where writtenExam<60 --统计不及格人数
if (@n>0)
update stuMarks --每人加2分
set writtenExam=writtenExam+2
else
break --退出循环
end
print '加分后的成绩如下:'
select * from stuMarks
case-end多分支语句
语法格式为:
case
when 条件1 then 结果1
when 条件2 then 结果2
else 其他结果
end
4批处理
批处理是作为一个逻辑单元的T-SQL语句。如果一条语句不能通过语法分析,那么不会运行任何语句。如果一条语句在运行时失败,那么产生错误的语句之前的语句都已经运行了。为了将一个脚本分为多个批处理,可使用GO语句。
GO语句的特点:
GO语句必须自成一行,只有注释可以再同一行上。
它使得自脚本的开始部分或者最近一个GO语句以后的所有语句编译成一个执行计划并发送到服务器,与任何其他批处理无关。
GO语句不是T-SQL命令,而是由各种SQL Server命令实用程序(如:ManagementStudio中的"查询"窗口)识别的命令。
2、SQL高级查询
1嵌套子查询
子查询也称为内部查询或内部选择,而包含子查询的语句也称为外部查询或外部选择
子查询是嵌套在另一个查询中的select—from—where表达式。子查询嵌套在where子句中,通常用于对集合的成员资格、集合的比较以及集合的基数进行检查,还用于:空关系测试,重复元祖存在性测试,from子句中的子查询,with子句。
集合成员资格:连接词in测试元组是否是集合中的成员,集合是由select子句产生的一组值构成的,对应的还有not in。
短语“至少比某一个要大”在SQL中用“>some”表示。
some子句的定义:C<comp> some r <=>存在t属于r(C <comp> t),其中<comp>可以为:< ,>,=,……(=some)=in;但是,(不等于some)不等于notin。
在SQL中,结构>all对应于词组“比所有的都大”。
all子句的定义:C <comp> all r <=> 任意t属于r(C<comp>t);(不等于all)等于not in 但是,(=all)不等于in。
SQL还有一个特性可测试一个子查询的结果中是否存在元组。exists结构在作为参数的子查询为空时返回true值。
Exists r <=> r不等于0
Not exists r<=> r=0
还可以将“关系A包含关系B”写成“not exists(B except A)”.
还有一个布尔函数,用于测试在一个子查询的结果中是否存在重复元组。如果作为参数的子查询结果中没有重复的元组unique结构将返回true值。
SQL允许在from子句中使用子查询表达式。任何select-from-where表达式返回的结果都是关系,因而可以被插入到另一个select-from-where中任何关系可以出现的位置。
2聚合技术
SQL提供了五个固有聚集函数:
平均值:avg
最小值:min
最大值:max
总和:sum
计数:count
其中,sum和avg的输入必须是数字集,但其他运算符还可以作用在非数字数据类型的集合上,如字符串。
还有分组聚集(group by):其中子句出的一个或多个属性是用来构造分组的,在group by子句中的所有属性上取值相同的元组将被分在一个组中。
having子句类似于where子句,但其是对分组限定条件,而不是对元组限定条件,having子句中的谓词在形成分组后才起作用,因此可以使用聚集函数。
3排序函数
row_number()
函数一般用于组内排序,而其他三个函数是对结果集排序
特点:没有并列编号,不跳空编号
rank()
特点:有并列编号,有跳空编号
dense_rank()
特点:有并列编号,没有跳空编号
4公用表表达式
语法结构
Withexpression_name [(column_name)(…..n)]
AS
(CTE query_definition) 查询结果
后续使用结果集时可直接使用公用表名称expression_name
3、存储过程
1存储过程的概念(存储过程都是用exec调用)
存储过程(procedure)类似于C语言中的函数,用来执行管理任务或应用复杂的业务规则,存储过程可以带参数,也可以返回结果。
存储过程可以包含数据操纵语句、变量、逻辑控制语句等,比如:单个select语句,select语句块,select语句与逻辑控制块。
存储过程优点:
执行速度更快
允许模块化程序设计
提高系统安全性
减少网络流通量
2系统存储过程
由系统定义,存放在master数据库中
类似C语言中的系统函数
系统存储过程的名称都以“sp_”开头或”xp_”开头
3用户自定义存储过程
CREATE PROC[EDURE] 存储过程名
@参数1 数据类型 =默认值 OUTPUT,
……,
@参数n 数据类型 =默认值 OUTPUT
AS
SQL语句
GO
4RAISERROR
RAISERROR ( { msg_id | msg_str | @local_variable }
{ ,severity ,state }
[ ,argument [ ,...n ] ]
)
[ WITH option [ ,...n ] ]
用户可定义0-18之间严重级别
二、JavaScript技术应用
1、JavaScript语句和函数
1条件
if 语句 - 只有当指定条件为 true 时,使用该语句来执行代码
if...else 语句 - 当条件为 true 时执行代码,当条件为 false 时执行其他代码
if...else if....else 语句 - 使用该语句来选择多个代码块之一来执行
switch 语句 - 使用该语句来选择多个代码块之一来执行
2循环
while的语法为
while (exp) {
//statements;
}
1 2 3 4 5 6 7 8 9 10 11 12 | var a=1,b=0; while(a<=1000){ if(a%2==0){ if(b%20==0) { document.write("<br>第"+parseInt(b/20+1)+"行偶数"); } document.write(a+" "+" "); b++; } a++; } |
其中,exp为一条件判断语句,最终的结果都可以用一个布尔值表示,若其结果为true则进行下面{}里的语句,然后继续判断exp,直到exp的结果为false为止,若exp的结果为false,则跳过这条循环语句,执行接下来的代码。需要注意的是在{}里的语句必须存在对exp的结果产生影响的代码,否则循环会一直重复下去,形成死循环。
do……while语句与while语句大体上相同,唯一的不同之处是do……while语句会先执行语句,然后对条件进行判断。其语法为
do {
//statements;
}while (condition);
同样是上面的例子,其结果变为
1 2 3 4 5 6 7 8 9 10 11 12 | var a=1,b=0; do{ if(a%2==0){ if(b%20==0) { document.write("<br>第"+parseInt(b/20+1)+"行偶数"); } document.write("<u>"+a+"</u>"+" "+" "); b++; } a++; }while(a<=1000) |
相较于上面的两种循环,for循环显得更为地简洁有效。
for (变量=开始值;变量<=结束值;变量=变量+步进值) {
需执行的代码
}
()里的三条语句中,第二条为判断语句,只有其结果为真时循环才会执行。
1 2 3 4 5 6 7 8 9 | for(var a=1,b=0;a<=100;a++){ if(a%2==0){ if(b%20==0) { document.write("<br>第"+parseInt(b/20+1)+"行偶数"); } document.write("<u>"+a+"</u>"+" "+" "); } } |
在循环中,有时候我们急需跳出整个循环或某一次的循环语句不进行执行,这时我们需要用到break语句和continue语句。这两个语句都存在于循环语句中,前者终止整个循环,后者阻止某次循环的执行
3函数
//求和函数
function sum(a,b){
return a+b;
}
这是最典型的函数声明,以关键字function开始,其后跟随函数名称标识符、一对圆括号(包含由0个或多个逗号隔开的参数名称)和一对花括号(包含0条或多条JS语句,构成函数体)。这种函数定义方式需要显式的指定函数名称,在代码执行前就被解释器加载到作用域中,这个特性可以让我们在函数定义之前就调用该函数。我们可以通过代码来验证这一点。
2、JavaScript对象
1数组
数组是指的数据的有序列表。
数组中每个值称之为数组的一个元素。
数组中的每个元素都有一个位置,这个位置称之为索引(下标、index)。数组的索引是从 0 开始的
同一个数组中,元素的类型不做任何限制。也就是说,同一个数组中可以方法Number、String、Boolean、Object对象等等。可以同时放入任何的类型。甚至数组中的元素可以是另外一个数组(构成多维数组)。
数组的特点
虽然每种语言都有数组这种数据结构,但是JavaScript的数组相比他们有很大不同。
数组长度可以动态改变。
同一个数组中可以存储不同的数据类型。
数据的有序集合
每个数组都有一个length属性,表示的是数组中元素的个数
创建数组
构造函数在创建对象的时候使用。数组的构造函数式 Array()
例如: new Array(数组长度);
//创建一个长度为 0 的空数组
var colors = new Array();
//创建一个长度为 5 的数组。每个数组的元素的默认值是 undefined。
var colors = new Array(5);
//创建一个长度为 3 的数组,并且3个元素分别是 "blue" "red""green"
var colors = new Array("blue","red", "green");
使用构造函数创建数组对象的时候,最后一个元素后面不要添加括号,否则报错。这样是错误的:new Array("a", )
使用构造函数如果只传入了一个Number值,则这个值必须 >= 0, 否则会报错。
使用构造函数创建数组对象的时候,new 关键字是可以省略的。 例如:Array(5) 这样是可以的。
每个数组都有一个叫 length的属性,表示数组的长度(即:元素的个数)。
var arr = [10, 20, 60, 5, 7];
alert(arr.length); //弹出:5
数组的遍历
一般有3种方法遍历数组:
for循环
for… in
for each ( ES5 新增)
数组常用方法
toString()转换方法:
返回由数组中每个值的字符串形式拼接而成的一个以逗号分隔的字符串
join() 方法:
toString() 方法只能使用逗号连接,而 join() 方法可以使用指定的连接符连接
向队列头部添加元素(unshift)、从队列头部移除元素(shift)
对数组元素进行倒置。
arr.reverse();
倒置操作是对原数组本身做了操作,返回的也是原数组对象,并不是一个新创建的数组。
indexOf(item): 从前面开始向后查找 item 第一次出现的位置
lastIndexOf(item): 从尾部开始向前查找 item 第一次出现的位置
如果找不到元素,则返回 -1
2正则表达式
正则表达式的常用方法:
regexp.test(string)
用来测试一个字符串是否能够被匹配。它返回ture或false两个值。
regexp.exec(string)
在指定的字符串中执行搜寻一个匹配,匹配的结果是通过一个数组返回
一些常用的正则表达式示例:
1、匹配所有的正数:^[0-9]+$
2、匹配所有的小数:^\-?[0-9]*\.?[0-9]*$
3、匹配所有的整数:^\-?[0-9]+$
4、提取信息中的中文字符串:[\u4e00-\u9fa5]* ;
5、提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
6、提取信息中的中国手机号码:(86)*0*13\d{9}
7、提取信息中的中国固定电话号码:(\d3,4\d3,4|\d{3,4}-|\s)?\d{8}
8、提取信息中的中国邮政编码:[1-9]{1}(\d+){5}
9、提取信息中的中国身份证号码:\d{18}|\d{15}
10、提取信息中的任何数字:(-?\d*)(\.\d+)?
3、文档对象模型
1Window对象
Window 对象属性
属性 | 描述 |
返回窗口是否已被关闭。 | |
设置或返回窗口状态栏中的默认文本。 | |
对 Document 对象的只读引用。请参阅 Document 对象。 | |
对 History 对象的只读引用。请参数 History 对象。 | |
返回窗口的文档显示区的高度。 | |
返回窗口的文档显示区的宽度。 | |
length | 设置或返回窗口中的框架数量。 |
用于窗口或框架的 Location 对象。请参阅 Location 对象。 | |
设置或返回窗口的名称。 | |
对 Navigator 对象的只读引用。请参数 Navigator 对象。 | |
返回对创建此窗口的窗口的引用。 | |
返回窗口的外部高度。 | |
返回窗口的外部宽度。 | |
pageXOffset | 设置或返回当前页面相对于窗口显示区左上角的 X 位置。 |
pageYOffset | 设置或返回当前页面相对于窗口显示区左上角的 Y 位置。 |
parent | 返回父窗口。 |
对 Screen 对象的只读引用。请参数 Screen 对象。 | |
返回对当前窗口的引用。等价于 Window 属性。 | |
设置窗口状态栏的文本。 | |
返回最顶层的先辈窗口。 | |
window | window 属性等价于 self 属性,它包含了对窗口自身的引用。 |
| 只读整数。声明了窗口的左上角在屏幕上的的 x 坐标和 y 坐标。IE、Safari 和 Opera 支持 screenLeft 和 screenTop,而 Firefox 和 Safari 支持 screenX 和 screenY。 |
Window 对象方法
方法 | 描述 |
显示带有一段消息和一个确认按钮的警告框。 | |
把键盘焦点从顶层窗口移开。 | |
取消由 setInterval() 设置的 timeout。 | |
取消由 setTimeout() 方法设置的 timeout。 | |
关闭浏览器窗口。 | |
显示带有一段消息以及确认按钮和取消按钮的对话框。 | |
创建一个 pop-up 窗口。 | |
把键盘焦点给予一个窗口。 | |
可相对窗口的当前坐标把它移动指定的像素。 | |
把窗口的左上角移动到一个指定的坐标。 | |
打开一个新的浏览器窗口或查找一个已命名的窗口。 | |
打印当前窗口的内容。 | |
显示可提示用户输入的对话框。 | |
按照指定的像素调整窗口的大小。 | |
把窗口的大小调整到指定的宽度和高度。 | |
按照指定的像素值来滚动内容。 | |
把内容滚动到指定的坐标。 | |
按照指定的周期(以毫秒计)来调用函数或计算表达式。 | |
在指定的毫秒数后调用函数或计算表达式。 |
2Document对象
document 对象的属性
document
对象主要有如下属性:
属性 | 说明 |
document.title | 设置文档标题等价于HTML的<title>标签 |
document.bgColor | 设置页面背景色 |
document.linkColor | 未点击过的链接颜色 |
document.alinkColor | 激活链接(焦点在此链接上)的颜色 |
document.fgColor | 设置前景色(文本颜色) |
document.vlinkColor | 已点击过的链接颜色 |
document.URL | 设置URL属性从而在同一窗口打开另一网页 |
document.fileCreatedDate | 文件建立日期,只读属性 |
document.fileModifiedDate | 文件修改日期,只读属性 |
document.fileSize | 文件大小,只读属性 |
document.cookie | 设置和读出cookie |
document.charset | 设置字符集 简体中文:gb2312 |
对象方法:
方法 | 说明 |
document.write() | 动态向页面写入内容 |
document.createElement(Tag) | 创建一个html标签对象 |
document.getElementById(ID) | 获得指定ID值的对象 |
document.getElementsByTagName(tagname) | 获得指定标签名的对象 |
document.getElementsByName(Name) | 获得指定Name值的对象 |
document.getElementsByClassName(classname) | 获得指定类名的对象(html5 API) |
3Location对象
Location 对象属性
属性 | 描述 |
设置或返回从井号 (#) 开始的 URL(锚)。 | |
设置或返回主机名和当前 URL 的端口号。 | |
设置或返回当前 URL 的主机名。 | |
设置或返回完整的 URL。 | |
设置或返回当前 URL 的路径部分。 | |
设置或返回当前 URL 的端口号。 | |
设置或返回当前 URL 的协议。 | |
设置或返回从问号 (?) 开始的 URL(查询部分)。 |
Location 对象方法
属性 | 描述 |
加载新的文档。 | |
重新加载当前文档。 | |
用新的文档替换当前文档 |
4History对象
History 对象属性
属性 | 描述 |
返回浏览器历史列表中的 URL 数量。 |
History 对象方法
方法 | 描述 |
加载 history 列表中的前一个 URL。 | |
加载 history 列表中的下一个 URL。 | |
加载 history 列表中的某个具体页面。 |
三、ASP.NET网站制作
1、ASP.NET页面对象
1网页脚本
当客户端通过客户浏览器发送HTTP请求时,web服务器将HTML文档部分和脚本部分返回给客户端浏览器,在客户端浏览器中解释执行并及时更新页面,脚本处理工作全部在客户端浏览器执行完成。
优点: 减轻服务器负荷,同时增加页面的反应速度。
缺点:浏览器差异性导致页面差异
支持的语言: JavaScriptJScript VBScript
(2)服务端脚本
当用户通过浏览器发送HTTP请求时,Web服务器运行脚本,并将运行结果与Web页面的HTML结合返回至客户端浏览器,脚本处理工作全部在服务器端完成。
优点:减少浏览器带来的运行结果差异,提高页面的稳定性。
缺点:增加了服务器的负荷,同时客户端反应速度慢。
支持的标准(规则):PHP、JSP、ASP、ASP.Net
2Page对象
在ASP中每个页面都派生自Page类,并继承这个类公开的所有方法和属性。Page 类与扩展名为 .aspx 的文件相关联,这些文件在运行时被编译为 Page 对象,并被缓存在服务器内存中。
Page类常用的属性:
IsPostBack,该属性可以检查.aspx页是否为传递回服务器的页面,常用于判断页面是否为首次加载。
IsValid,该属性用于判断页面中的所有输入的内容是否应经通过验证,它是一个布尔值的属性。当需要使用服务器端验证时,可以使用该属性。
IsCrossPagePostBack,该属性判断页面是否使用跨页提交,它是一个布尔值的属性。
3页面传值
一、Request.QueryString
核心代码:
protected voidgetQueryString_Click(objectsender, EventArgs e)
{
stringQueStr = Request.QueryString["name"];
Response.Write(QueStr);
}
总结:
1、Request.QueryString:获取http查询字符串变量集合。有两重载,即Request.QueryString[stringname]和Request.QueryString[int index];
2、Request.QueryString主要是获取url中的“?”之后的参数,如url:a.aspx?name="queryString",则Request.QueryString["name"]的值为“queryString”。
二、Request.Form
核心代码:
protected voidgetQueryString_Click(objectsender, EventArgs e)
{
stringstrQueForm = Request.Form["TextBox1"];
Response.Write(strQueForm);
}
总结:
1、Request.Form 获取窗体变量集合。有两重载,即Request.Form[stringname]和Requst.Form[int index]。
2、获取表单指定名字的参数值。
2、Request、Respone、Server对象
1Request对象
2Respone对象
3Server对象
3、数据绑定技术
1数据绑定概述
asp.net 引入了新的声明性数据绑定语法.这种非常灵活的语法允许开发人员不仅可以绑定到数据源,而且可以绑定到简单属性.集合.表达式甚至是从方法调用返回的结果.下表显示了新语法的一些示例.
数据绑定概述与语法
简单属性 customer: <%# custid %>
集合 orders: <asp:listboxid="list1" datasource=´<%# myarray %>´runat="server">
表达式 contact: <%# ( customer.first name +" " + customer.lastname ) %>
方法结果 outstanding balance: <%#getbalance(custid) %>
尽管该语法看起来与 asp 的response.write 快捷方式 <%= %> 相似,但其行为完全不同.asp response.write 快捷方式语法在处理页时计算,而 asp.net 数据绑定语法仅在调用 databind 方法时计算.
databind 是页与所有服务器控件的方法.当在父控件上调用 databind 时,它级联到该控件的所有子控件.例如,datalist1.databind() 将因此对 datalist 模板中的每一控件调用 databind 方法.在页上调用 databind — page.databind() 或只是 databind() — 会导致计算页上的所有数据绑定表达式.通常从 page_load 事件调用 databind,
2数据源控件
数据源控件 | 说明 |
使用此控件,可以通过标记在 ASP.NET 网页中使用语言集成查询 (LINQ),从数据对象中检索和修改数据。支持自动生成选择、更新、插入和删除命令。该控件还支持排序、筛选和分页。 | |
允许绑定到基于实体数据模型 (EDM) 的数据。支持自动生成更新、插入、删除和选择命令。该控件还支持排序、筛选和分页。 | |
允许您使用业务对象或其他类,以及创建依赖中间层对象管理数据的 Web 应用程序。支持对其他数据源控件不可用的高级排序和分页方案。 | |
允许您使用 Microsoft SQL Server、OLE DB、ODBC 或 Oracle 数据库。与 SQL Server 一起使用时支持高级缓存功能。当数据作为 DataSet 对象返回时,此控件还支持排序、筛选和分页。 | |
允许您使用 Microsoft Access 数据库。当数据作为 DataSet 对象返回时,支持排序、筛选和分页。 | |
允许使用 XML 文件,特别适用于分层的 ASP.NET 服务器控件,如 TreeView 或 Menu 控件。支持使用 XPath 表达式来实现筛选功能,并允许您对数据应用 XSLT 转换。XmlDataSource 允许您通过保存更改后的整个 XML 文档来更新数据。 | |
结合 ASP.NET 站点导航使用。 |
SqlDataSource 控件
SqlDataSource 控件使用 SQL 命令来检索和修改数据。SqlDataSource 控件可用于 Microsoft SQLServer、OLE DB、ODBC 和 Oracle 数据库。
SqlDataSource 控件可将结果作为 DataReader 或 DataSet 对象返回。当结果作为 DataSet 返回时,该控件支持排序、筛选和缓存。使用 Microsoft SQLServer 时,该控件还有一个优点,那就是当数据库发生更改时,SqlCacheDependency对象可使缓存结果无效。
3数据绑定控件
GridView控件
主要特点:支持删、改,排序、分页、外观设置、自定义显示数据
缺 点:影响程序性能、不支持插入操作
GridView控件也提供了用于编辑格式的模板功能,但是不支持数据的插入。
ListView控件
主要特点:提供了增、删、改、排序、分页等功能,还可以支持用户自定义模板
缺 点:影响程序性能、大数据分页效率低
ListView控件会按照编程者编写的模板格式显示数据。与DataList和Repeater控件相似,ListView控件也适用于任何具有重复结构的数据。
Repeater控件
主要优点:该控件是一个完全的开发性控件,可以自如的显示用户自定义的显示方式
缺 点:不支持分页、排序、编辑,仅提供重复模板内容
Repeater 控件是一个数据绑定容器控件,用于生成各个子项的列表,这些子项的显示方式可以完全由编程者自己编写。
DataList控件
主要优点:可以自定义格式显示数据、比较灵活
缺 点:不支持分页、编辑插入
该控件可以以自定义的格式显示各种数据源的字段,其显示数据的格式在创建的模板中定义,可以为项、交替项、选定项和编辑项创建模板。DataList控件也可以使用标题、脚注和分隔符模板自定义整体外观,还可以一行显示多个数据行。虽然DataList控件拥有很大的灵活性,但其本身不支持数据分页,编程者需要通过自己编写方法完成分页的功能。仅用于数据的显示,不支持编辑、插入、删除。
DetailsView控件
主要优点:以表格形式显示单条数据、支持排序、插入、删除、修改、分页
缺 点:不支持排序
DetailsView控件以表格形式(table标签)一次仅显示数据源的单条记录,并且table标签下的每行(tr标签)表示记录中的一个字段。这个控件同样支持数据的编辑、插入和删除操作,并可以轻松地设置分页功能,但是DetailsView控件本身不支持数据排序。
FormView控件
主要优点:显示单条数据、分页、增、删、改,可自定义模板显示
缺 点:不支持排序
从功能上看FormView控件与DetailsView控件很相似,,FormView控件仅可显示数据源中的单条记录。和DetailsView控件不同,DetailsView控件采用表格布局(table标签),记录的每个字段都各自显示为一行。而FormView控件没有用于显示记录的预置布局,编程者需要自己创建子项模板,编写各种用于显示记录中的字段的控件以及布局用的其他HTML标签。和DetailsView控件一样,FormView控件可以轻松地启用分页功能。如果仅仅显示单条记录,FormView控件是比较推荐的方法,因为可以在高效开发的同时自定义数据显示的格式。
DropDownList控件
主要优点:多用于多级联动
缺 点:尽可显示一个字段
DropDownList控件一般多用于多级联动,比如省市的联动等,这里主要讲一下关键点,就是要为DropDownList设置要显示的字段和值显示字段即:
绑定后结果如下:
到这里已经把Asp.net常用的数据绑定控件的各自的优劣讲析了一下,我们只有深刻的理解各个控件的特点,才可以更好的在合适的情况下,采用合适的控件,更好的促进程序开发。当然,可能在实际的开发过程中,我们都不会用到这些控件,经过微软的封装之后产生太多的额外信息,增加了服务器的压力。但是,还是把这些东西总结了出来,希望可以对大家有所帮助。也希望大家多多指点!
4Gridview
主要特点:支持删、改,排序、分页、外观设置、自定义显示数据
缺点:影响程序性能、不支持插入操作
这个控件可以以表格形式(table标签)显示、编辑和删除多种不同的数据源(例如数据库、XML文件以及集合等)中的数据。GridView控件功能非常强大,如果需要,编程者可以不用编写任何代码,通过VS 2008拖拽,并从属性面板设置属性即可,还可以完成如分页、排序、外观设置等功能。虽然功能非常齐全,但程序性能将受到影响,在页面中最好不要过多地使用该控件。当然,如果需要自定义格式显示各种数据,GridView控件也提供了用于编辑格式的模板功能,但是不支持数据的插入。
图示:
5 DetailsView控件
主要优点:以表格形式显示单条数据、支持排序、插入、删除、修改、分页
缺 点:不支持排序
DetailsView控件以表格形式(table标签)一次仅显示数据源的单条记录,并且table标签下的每行(tr标签)表示记录中的一个字段。这个控件同样支持数据的编辑、插入和删除操作,并可以轻松地设置分页功能,但是DetailsView控件本身不支持数据排序。
6SQLDataSource用法
可以在后台代码充当数据源
SqlDataSourcesds = new SqlDataSource(“连接字符串”,“查询语句”);
DataView dv =(DataView)sds.Select(new DataSourceSelectArguments());
GRIDVIEW1.DATASOURCE=DV;
GRIDVIEW1.DATABIND();