备案老域名

已经备案域名购买,老域名出售,已备案域名交易,老域名查询,已经备案域名注册,老域名抢注,Godaddy,宜春网站建设

管理约束和默认值

如果DataSet对象被用作可以存储和传送非连接数据的包,我们就需要对结构以及DataSet的内容进行很好的控制。使用代码我们可以直接将数据硬编码到页面的,但是它们可以像以前那样由用户输入,或者通过处理从其他种类的数据存储收集的数据来实现——这也许是我们迄今为止使用的唯一的一种不支持基于SQL的数据访问的方法。

当我们从使用DataAdapter对象的Fill方法的现有数据源中填充DataSet中的表的时候,关于每列数据类型的信息都从数据源中自动收集起来,并添加到表中。而且,如果我们首先使用DataAdapter对象FillSchema方法,那么列的约束(即关键字,默认值,惟一值,无效值等等)也将添加到表中。所以,如果数据库的初始源表中的一列是不接受Null值的整型数据类型,则DataSet中的表也将具有相同的属性。

通过存储过程使用显式的参数

在执行存储过程的时候我们经常会使用“内联”以及“隐式”参数,我们知道这个过程是很容易编程的。而且还提供了更为简洁(因而更为快速)的代码。不过,一旦我们使用了两个以上的参数,或者需要使用返回参数来将结果从数据库返回到代码中,那么隐式技术就不那么使用了。这种技术的另一个局限性就是有些数据存储不支持它。为了得到一种更为普通的方法,我们可以显式地为每个存储过程都创建一个参数,并且在执行查询之前给这些参数赋值。

Command对象给出了可以包含多个Parameter对象的Parameters集合。每个Parameter对象都有一系列我们可以访问和设置的属性。当我们调用Command对象中的ExecutePeader、ExecuteNonQuery或者ExecuteScalar方法时,这些参数就会作为命令的一部分被发送到数据存储。

使用XSL和XSLT转换

我们还要重复一个最先在数据库管理中学习的问题,我们以前曾经做过用新的XslTransform对象对XML或XSLT转换时很容易的。但是,那是我们用的是很基本的方法——通过制定这些文件的路径来将转换应用到两个磁盘文件(XML文档和样式表)。

当文档并不是一个磁盘文件时,我们可以用XslTransform对象来执行转换。这种情况在处理XML的应用程序中很可能出现,例如XML可能别一个XmlTextReader引用,或者可能存储在由web服务或业务组件返回的XmlDocument对象中,甚至可能有一个现有的XPathNavigator指向该XML的指针。另外,我们可能不需要将结果写成磁盘文件——而是要将他们作为一个String或StringBuilder对象。

处理DataTable事件

DataTable对象给出了一系列事件,我们可以使用这些事件来监控对DataSet中表内容作的修改。在对列进行修改之前(允许取消这种修改),为正在被编辑的行中的某列引发ColumnChanging事件。ColumnChanged事件是在下面情况被激活的:列发生了修改,而且这种变化已经固定了下来。

还有些事件是把行为作为一个整体,而不是作为行中的一列而出现的。RowChanging和RowChanged事件是在表中的任何行的内容发生变化时出现的——前者是发生在对行进行修改之前(允许取消这种修改),而后者发生时,这种变化已经固定在表中了。

指定主键和外键

我们在完成创建DataSet,添加表和关系,用数据填充表,以及设置每列上的几个属性。但是还有待于考虑的一点是我们如何创建作为主键和外键的列。当我们打开页面,我们就会看到从数据存储的两个表中选择数据,并且用它们填充DataSet对象。这样就自动为列设置了适当的数据类型。但它并没有在DataSet中指定表中哪些列是主键,哪些列是外键。

很明显,我们可以在DataSet中内部创建各表之间的关系。接着可以再表中访问数据时使用这种关系从父记录导航到自子记录,以及返回父记录,这就像我们以前学过的那样,不过这样做并不改变表的结构,也不会对每个表指定哪些列是主键,哪些列是外键。所以,我们需要能够自己创建这些键,以前需要对每个列对象都设置属性值,现在则不同,为了定义主键和外键我们把他们创建为对象,并且复制列约束条件。这样做是因为主键和外键的组合可能不仅仅包含一列——例如我们数据库中BookPrices表的可能主键就是ISBN号和货币名的组合。没有哪一列的值在整个表中是独一无二的,只有若干列的组合才可能提供惟一的键值。不过ISBN列单独提供了到父表BookList的链接,故我们把它指定为BookPrices表中的一个外键。

利用Command对象更新数据

在网站建设编码过程中,我们需要对数据存储进行简单的单行或多行更新,通常一起使用一个ADO Connect的对象或Command对象,和一个SQL语句或存储过程来实现。这对于向数据库中插入一行新纪录是非常有用的,例如响应用户提交对站点的反馈,或是每月电子邮件公司的注册。另外,对于删除一行或多行,或是更新行的值等操作,这个技术也是非常适用的。

在.NET Framework中,实用一个新的Command对象也可以实现同样的目的。SqlCommand对象只适用于SQL Server(TDS),而OleDbCommand对象则只适用于那些可以利用OLEDB提供者的数据存储。在网页的页面中我们使用一个SQL UPDATE语句对数据库中的一行进行修改,还可以使用数据库中的一个存储过程添加或删除现有的一行。这两种方法都可以对数据进行更新,但对数据源进行更新的一个简单的方法就是创建一个适当的SQL语句,然后使用一个Command对象对数据源运行该语句。在设计好页面后,我们打开页面可以看到,Page_Load事件处理程序中的代码就会创建一个SQL UPDATE语句,该语句的BookList表中对某个具体特定ISBN代码的名字进行修改,这样更新数据既操作简单,又快速。

使用事务处理更新数据源

大多数数据库系统和一些其他类型的数据存储的特点之一就是能够使用事务。简单说来,事务就是在网站建设编码中一系列全部完成或全部没完成的事件。不可能出现事务中的某些事件发生而另一些没有发生的折中情况。

事务这个名称来自于现实世界。例如在商店里买某样东西,我们用钱来交换售货员的货物。除非我们是受骗了,否则这个交易或者成功,两者皆大欢喜(也就是我们付钱并得到货物),或者交易失败,什么都没发生。不可能出现付了钱却没有得到货物,或是得到了货物却没付钱的情况。在这里我们来说两种类型的事务,数据库事务,数据库专用语句对事务加以控制。它是在数据库的内部执行的,通常事务语句是包含在数据库中的存储过程中的。基于连接的事务,控制事务的语句以及该事务的执行和管理都是在数据库之外实现的。通常这些都是执行SQL语句或存储过程的Connection对象的一个功能。

Impersonation功能的应用

有时用户访问资源时的身份好像用了其他用户或其他名一样。一个例子就是当web页没有访问控制时,也就是说允许任何用户访问该页。实际上这是一种过分简化,因为windows从来不允许匿名访问。所有用户必须通过现有账号进行身份验证和授权。网站建设中对于HTML页、ASP页和以前版本中的组件而言,通过IUSR_machinename和IWAM_machinename这两个账户进行身份验证。当安装IIS时设置这些账户,并且自动添加到服务器上每个web站点的所有文件夹中。

如果我们允许匿名访问IIS中的资源,每个用户看起来都一样,我们将无法辨识用户,也不需要识别。当IIS接收到对允许匿名访问的web页或其他资源的请求时,它使用IUSR_machinename账户代表用户访问资源。如果他们请求的资源是一个使用COM或COM+组件的ASP页,该组件默认情况下用IWAM_machinename账户执行。

ASP.NET中的安全性

我们知道许多使用以前版本的ASP在IIS中的配置设置,现在可以通过新的配置文件web.config的一个或多个实例实现。这一点适用于internet services manager接口(在MMC中)中的大多数设置,因为web.config文件取代了该接口所操纵的元库内容。

然而,IIS中的安全设置在许多领域仍然有效。这是因为与应用设置的配置和自定义错误等不同,IIS仍然管理着请求以及执行与操作系统本身相关联的基本安全进程。实际上讲,ASP.NET页的请求由IIS接收,IIS使用为包含该页面的站点所定义的应用映射来将请求定向到ASP.NET。

规定验证方法

在站点或目录的properties对话框的directory security页中的第三个选项允许我们规定所使用的验证方法。

1、匿名访问,任何用户可以访问所提供的web服务,所设置的IP地址和 限制不能阻止这种访问。然后,IIS通过使用ISUR账户访问他们所代表的资源,如此它们就可以访问对这些账户有效的所有资源。

2、基本验证,如果禁止匿名访问,则会向用户提供一个登录对话框,此对话框由浏览器或客户端用户代理应用程序生成。它们所提供的用户名称额密码是Base64编码,可以传递给IIS。然后它在windows查看此账户,如果账户有效并具有访问该资源的正确的许可,则就会允许用户访问资源。

分页:«8910111213141516171819202122»

Copyright www.hfyixinsoft.cn. Some Rights Reserved.