1、服务器控件。控件的一些基本属性,服务器控件都直接或间接派生自system.web.ui.control类(定义由所有 ASP.NET 服务器控件共享的属性、方法和事件。),control类有以下常见属性clientid,id,skinid,uniqueid,visible等
2、BUTTON事件:click 和command(需要传参数时用到,不同之处在于使用的委托不同)。一些属性:causesvalidation,commandargument,cssclass,enabled,onclientclick(客户端点击事件),text,validationgtoup。
3、textbox控件:textmode属性控制输入框形式。singleline 单行,password 密码 multiline 多行 。autopostback属性。可以在textbox中添加onblur、onpress等客户端事件,虽然vs不认但 一样可以解释出来。下面列举textbox只能输入文字或数字的方法
<textarea cols="50" rows="15" name="code" class="c-sharp">//此例是去掉中文,将文本框中的中文替换为"" protected void Page_Load(object sender, EventArgs e) { Session.Clear(); this.TextBox1.Focus(); if (IsPostBack == false) { TextBox1.Attributes.Add("OnFocus", "this.select();"); TextBox1.Attributes.Add("OnKeyUp", "this.value=this.value.replace(/[/u4e00-/u9fa5]/g,'');"); } } </textarea>
4、fileupload控件:属性:filebytes, 。。。使用server.mappath()函数把虚拟目录转变成物理路径
5、literal(和lable只有一个区别,就是在转换成客户端Html代码后,Label就成了<span></span>,而Literal则是什么标记都不带。
Literal 不允许您向其内容应用样式。)控件。response.whrite()显示的文本可能在<html></html>之外
6、panel控件。产生一个div标记
7、placeholder控件。(不产生任何html标记)
8、服务器控件方便 但比html控件的效率要低,有空学习以下html控件。
第七集(很重要的一集)
1、ado.net简介:提供了平台互用性和可伸缩的数据访问。
ADO.NET active data object 动态数据对象 他是负责提取从数据库中获得你想要数据的一组命名空间和类的统称
在ADO,NET里定义了很多的命名空间 比如.sqlclint oledb...等等 负责从不同类型的数据库里提取数据
而在这些命名空间中又定义了很多不同的类负责不同的功能 比如sqlconnection是针对sql数据库负责和数据库取得连接的
而sqldatareader是获得1Reader对象的...
说白了就是一个数据驱动程序。
是.net和sql进行互动的中间件...
一般你只要了解ado.net的四大核心组件:
command
connection
dataAdapter
dataReader
DataSet
那么ado.net也就了解的差不多了....
ADO.NET就是.NET Framework的类库中一些特定的能够对数据库中的数据进行操作的类的集合,如图6-4所示。
图6-4 ADO.NET的体系结构 |
ADO.NET实际包括两个组成部分。
1.数据提供者
也称为.NET Framework 数据提供程序,实际上就是建立和数据库的连接、提取数据、操作数据、执行数据命令等一系列类。
2.DataSet(数据集)
表示数据在客户机内存中的缓存。
NET框架是ADO.NET的运行支撑环境,其内部的类集合中包括了ADO.NET的所有类集合。
ADO.NET是有关数据库访问和操作的主要类集合,是.NET框架中非常重要的组成部分。利用ADO.NET技术编制的数据库程序必须在.NET框架支持下才能运行。
数据提供程序
1.核心对象
ADO.NET中的数据提供程序主要包括如表6-2所示的4个核心对象。
2.非核心对象
除了表6-2所示的核心对象之外,还包括表6-3所示的其他对象。
表6-2 ADO.NET的数据提供程序的核心对象
对 象 名 称 |
对 象 功 能 |
Connection对象 |
数据库连接对象,建立和数据库的连接 |
Command对象 |
命令对象,更加灵活执行命令的对象 |
DataReader对象 |
数据阅读器对象,读取数据源中只读、向前的数据 |
DataAdapter对象 |
数据适配器对象,读取数据源数据填充数据集对象DataSet |
表6-3 ADO.NET的数据提供程序的非核心对象
对 象 名 称 |
对 象 功 能 |
Transact对象 |
事务对象,在AOD.NET中使用事务 |
CommandBuilder对象 |
帮助器对象,将自动生成 DataAdapter 的命令属性或将从存储过程派生参数信息并填充 Command 对象的 Parameters 集合 |
ConnectionStringBuilder对象 |
帮助器对象,为创建和管理 Connection 对象所使用的连接字符串的内容提供了一种简单的方法 |
Parameter对象 |
参数对象,定义命令和存储过程的输入、输出和返回值参数 |
Exception对象 |
例外对象,在ADO.NET遇到错误时返回 |
Error |
错误对象,获取错误或者警告信息 |
ClientPermission |
设置代码访问的安全属性 |
ADO.NET访问数据库的两种机制
前面我们已经知道ADO连接数据库的方法。如果是很大的网络系统,同时连接到数据库服务器的客户机数量会很多。这样在数据库服务器上会频繁进行“建立连接”、“释放资源”、“关闭连接”的操作。这样会使服务器的性能经受严峻的考验。那么,怎样才能改进数据库连接的性能呢?这要从ADO.NET访问数据库的两种机制谈起。
1.连接模式
连接模式下,客户机一直保持和数据库服务器的连接,这和ADO技术是一致的。这种模式适合数据传输量少、系统规模不大、客户机和服务器在同一网络内的环境。一个典型的ADO.NET连接模式如图6-5所示。
(1)使用Connection对象连接数据库。
(2)使用Command(命令)对象向数据库索取数据。
(3)把取回来的数据放在DataReader(数据阅读器)对象中进行读取。
(4)完成读取操作后,关闭DataReader对象.
(5)关闭Connection对象。
提示:ADO.NET的连接模式只能返回向前的、只读的数据,这是因为DataReader对象的特性决定的。
2.断开连接模式
断开连接模式适合网络数据量大、系统节点多、网络结构复杂,尤其是通过Internet/Intranet进行连接的网络。典型的ADO.NET断开连接模式应用如图6-6所示。
断开连接模式下数据访问的步骤如下。
(1)使用Connection对象连接数据库。
(2)使用Command对象获取数据库的数据。
(3)把Command对象的运行结果存储在DataAdapter(数据适配器)对象中。
(4)把DataAdapter对象中的数据填充到DataSet(数据集)对象中。
(5)关闭Connection对象。
(6)在客户机本地内存保存的DataSet(数据集)对象中执行数据的各种操作。
(7)操作完毕后,启动Connection对象连接数据库。
(8)利用DataAdapter对象更新数据库。
(9)关闭Connection对象。
在.NET Framework中,ADO.NET被具体实现为一个一个的类。这些类又集中在System.Data的命名空间中。下面简要介绍System.Data命名空间的主要内容,这也是ADO.NET将要涉及的主要的类。
6.3.1 System.Data命名空间
System.Data命名空间的核心内容是DataSet对象及相关的类,如表6-4所示。
表6-4 System.Data命名空间的主要类
对 象 名 称 |
对 象 功 能 |
DataSet |
数据在内存中的缓存 |
DataTable |
内存中的数据表 |
DataTableCollection |
内存中的DataTable集合 |
DataView |
内存中某个DataTable的视图 |
DataRow |
DataTable中的某行数据 |
DataRowCollection |
DataTable中行的集合 |
DataRowView |
DataRow的视图 |
DataColumn |
DataTable的列结构 |
DataColumnCollection |
某个DataTable对象的DataColumn集合 |
DataRelation |
两个DataTable之间的关系 |
DataRelationCollection |
DataSet中所有的DataRelation对象的集合 |
Constraint |
DataColumn对象上的约束 |
ConstraintCollection |
某个DataTable上所有的Constraint对象的集合 |
DataTableReader |
以一个或多个只读、只进结果集的形式获取N个 DataTable 对象的内容 |
DataException |
使用ADO.NET时发生的意外 |
System.Data.Common命名空间的核心内容是各种 .NET Framework 数据提供程序共享的类,如表6-5所示。
表6-5 System.Data.Common命名空间的主要类
对 象 名 称 |
对 象 功 能 |
DataAdapter |
一组SQL 命令和一个数据库连接,用于填充 DataSet 和更新数据源 |
DbCommand |
表示要对数据源执行的 SQL 语句或存储过程 |
DbConnection |
表示到数据库的连接 |
DbDataAdapter |
继承DataAdapter的大部分功能 |
DbDataReader |
从数据源返回只读的、向前的数据 |
DbException |
数据源引发的异常 |
DbParameter |
为DbCommand对象设置参数 |
DbTransaction |
事务 |
System.Data.Odbc命名空间的核心内容是基于ODBC接口可以访问的数据源的数据提供程序。目前主流的关系型数据库、文本文件、Excel电子表格文件等都支持ODBC接口。命名空间的主要内容如表6-6所示。
表6-6 System.Data.Odbc命名空间的主要类
对 象 名 称 |
对 象 功 能 |
OdbcCommand |
对数据源执行的 SQL 语句或存储过程 |
OdbcConnection |
连接数据源 |
OdbcDataAdapter |
数据命令集和到数据源的连接,它们用于填充 DataSet 以及更新该数据源 |
OdbcDataReader |
从数据源提取只读、向前的数据 |
OdbcError |
从数据源返回的错误或者警告信息 |
OdbcException |
数据源引发的异常 |
OdbcParameter |
设置OdbcCommand对象的参数 |
OdbcTransaction |
设置事务 |
System.Data.OleDb命名空间的核心内容是基于OLEDB接口可以访问的数据源的数据提供程序。命名空间的主要内容如表6-7所示。
表6-7 System.Data.OleDb命名空间的主要类
对 象 名 称 |
对 象 功 能 |
OleDbCommand |
对数据源执行的 SQL 语句或存储过程 |
OleDbConnection |
连接数据源 |
OleDbDataAdapter |
数据命令集和到数据源的连接,它们用于填充 DataSet 以及更新该数据源 |
OleDbDataReader |
从数据源提取只读、向前的数据 |
OleDbError |
从数据源返回的错误或者警告信息 |
OleDbException |
数据源引发的异常 |
对 象 名 称 |
对 象 功 能 |
OleDbParameter |
设置OleDbCommand对象的参数 |
OleDbTransaction |
设置事务 |
System.Data.OracleClient命名空间的核心内容是专为Oracle数据库设计的数据提供程序。命名空间的主要内容如表6-8所示。
表6-8 System.Data.OracleClient命名空间的主要类
对 象 名 称 |
对 象 功 能 |
OracleCommand |
对数据源执行的 SQL 语句或存储过程 |
OracleConnection |
连接数据源 |
OracleDataAdapter |
数据命令集和到数据源的连接,它们用于填充 DataSet 以及更新该数据源 |
OracleDataReader |
从数据源提取只读、向前的数据 |
OracleError |
从数据源返回的错误或者警告信息 |
OracleException |
数据源引发的异常 |
OracleParameter |
设置OracleCommand对象的参数 |
OracleTransaction |
设置事务 |
System.Data.SqlClient命名空间的核心内容是专为SQL Server数据库设计的数据提供程序。命名空间的主要内容如表6-9所示。
表6-9 System.Data.SqlClient命名空间的主要类
对 象 名 称 |
对 象 功 能 |
SqlCommand |
对数据源执行的 SQL 语句或存储过程 |
SqlConnection |
连接数据源 |
SqlDataAdapter |
数据命令集和到数据源的连接,它们用于填充DataSet,以及更新该数据源 |
SqlDataReader |
从数据源提取只读、向前的数据 |
SqlError |
从数据源返回的错误或者警告信息 |
SqlException |
数据源引发的异常 |
SqlParameter |
设置SqlCommand对象的参数 |
SqlTransaction |
设置事务 |
System.Data.SqlServerCe命名空间的核心内容是ADO.NET 2.0中专为SQL Server Mobile数据库设计的数据提供程序。命名空间的主要内容如表6-10所示。
表6-10 System.Data.SqlServerCe命名空间的主要类
对 象 名 称 |
对 象 功 能 |
SqlCeCommand |
对数据源执行的 SQLCE 语句或存储过程 |
SqlCeConnection |
连接数据源 |
SqlCeDataAdapter |
数据命令集和到数据源的连接,它们用于填充DataSet,以及更新该数据源 |
SqlCeDataReader |
从数据源提取只读、向前的数据 |
SqlCeError |
从数据源返回的错误或者警告信息 |
SqlCeException |
数据源引发的异常 |
SqlCeParameter |
设置SqlCeCommand对象的参数 |
SqlCeTransaction |
设置事务 |
(扩展阅读链接http://book.51cto.com/art/200708/54525.htm)
此图显示了ado.net的统一性物理数据库(database)和内存数据库(dataset)的对比
2、connection对象,数据库连接对象,两个属性connectionstring 用于打开数据库的字符串。state 状态(closed和open)。两个方法 open() close()打开和关闭数据库。
3、command对象L三个方法 executenonquery()(返回受影响的行数,主要对数据库之星增 删 改操作。) executereader()返回一datareader对象 executescalar()返回查询结果的第一行第一列的值
4、datareader对象:只读的。读取数据的方式第一是按照索引的方式(如 sqldatareader reader=“”; reader.getint(0)或reader[0]或reader["字段名"] 都能获取第一列)第二是
5、dataadapter对象
6、dataset对象:数据集对象。用于表示那些存储在内存中的数据。
7、datatable对象:是ado.net库中的核心对象,就像普通数据库一样 也有行和列(datarow和datacolumn(列又称字段))
8、参数化sql语句:避免sql注入的两种方式第一是用存储过程写语句效率高防注入,第二就是参数化sql语句。
9、分页查询语句:top not in 要比在网页中分页更效率
10、sqldatasorse、accessdatasource、objecdatasourse数据源控件不宜使用,每次都是查询到所有的数据之后进行挑选,效率极低。