ASP网站制作之谈asp中数据库的事务处置及技能
减少客户内IT专业人才缺乏带来的影响。ASP的客户员工利用浏览器进入相关的应用软件,简单易用,无需专业技术支持。 看过很多伴侣的代码,包含一些学了挺长工夫的伴侣,在对数据库的处置傍边历来不利用事务,或有些固然利用了事务处置,但并没有到达他们所预期的后果。实践上,真正要做一个贸易化的法式,对数据的事务处置是必不成少的。上面就一些事务处置的成绩谈一下我的意见。甚么叫事务,这里我就不祥述了,感乐趣的伴侣可以本人看一下sql server的book online或是msdn。我举一个浅易的例子吧,好比说你要把一个form中的数据同时向两个相干联的表中拔出,假如不利用事务,那便可能呈现这用情形,第一个表中胜利更新后,俄然数据库呈现不测情况,第二个表的操作没有完成,如许的话有甚么了局也就不必说了。要防止这类情形,就应当利用事务,它的感化就是要不两个表都操作胜利,要不都掉败,换句话说,就是坚持数据的分歧性。详细做法是如许,在begin trans以后的一切操作只要到commit trans的时分才真正履行,假如个中有一局部操作掉败,那末就用rollback trans恢复全部事务,是数据坚持一切操作停止之前的形态。但这里需求注重的一个成绩是,假如有一局部操作掉败,但不是致命毛病,那末数据库不会停在那儿,而是持续下一条操作,直到履行到commit trans , 体系会履行那些已胜利的操作,这也就是为何有些法式虽然用了事务但仍是呈现只要局部数据被更新的情形,而不是料想的可以坚持数据的分歧性。所以准确的做法应当是在每个对数据的操作后,都应当反省一下@@error的值,假如失足则转向毛病处置局部,该局部担任履行rollback trans ,恢复全部事务。
看上面两个表,这是一个bbs的注册用户表和它的相干表。
if exists(select * from sysobjects where ID = object_id("BBSUser"))
drop table BBSUser
go
create table BBSUser
(
ID int Primary key identity not null ,
UserName varchar(20) default "" not null ,
Password varchar(10) default "" not null ,
UserType tinyint default 0 not null , --用户类型,1为斑竹
Email varchar(100) default "" not null ,
HomePage varchar(100) default "" not null ,
ICQ varchar(20) default "" not null ,
Signature varchar(255) default "" not null , --签名
Point int default 0 not null , --用户积分
)
go
if exists(select * from sysobjects where ID = object_id("BBSUserAction"))
drop table BBSUserAction
go
create table BBSUserAction
(
id int Primary key identity not null ,
UserID int default 0 not null , --用户ID
SignTime datetime default getdate() not null , --登录工夫
IP varchar(15) default "" not null , --登录IP
)
go
上面这个存储进程要完成如许一个义务,就是用户在注册完后把数据拔出这两个表,而且第二表中的UserID的值是拔出第一个表中的主动增添型字段ID,这里就用到一个技能,用到了体系变量@@identity,它的值就是最初一次拔出操作中的identity型字段的值。这个存储过程当中就用到了事务,请细心看一下代码吧,我就不多说了。
if exists (select * from sysobjects where ID = object_id("up_RegisterUser"))
drop proc up_RegisterUser
go
create proc up_RegisterUser
@a_strUserName varchar(20) , @a_strPassword varchar(10) , @a_strEmail varchar(100) ,
@a_strHomepage varchar(100) , @a_strICQ varchar(20) , @a_strSignature varchar(255) ,
@a_strIP varchar(15)
as
declare @m_strUserID int
/*由于要对两个表停止操作,所以放到事务傍边*/
begin tran --事务入手下手
insert into BBSUser values --更新BBSUser表
(
@a_strUserName , @a_strPassword , 0 , @a_strEmail ,
@a_strHomepage , @a_strICQ , @a_strSignature , 0
)
if (@@error <> 0) goto On_Error --假如操作掉败,转向毛病处置
select @m_strUserID = @@identity --保留刚拔出的ID号
insert into BBSUserAction values --更新BBSUserAction表
(
@m_strUserID , getdate() , @a_strIP
)
if (@@error <> 0) goto On_Error --假如操作掉败,转向毛病处置
commit tran --事务停止
return (0) --前往胜利码
On_Error: --毛病处置
rollback tran --恢复事务
return (-1) --前往毛病码
go
强大的可扩展性。ASP具有强大的扩展性,可以实现与多种网络、硬件设备的连接:通过专用的通讯线路远程接入企业; 通过远程拨号服务器为远程拨号客户提供服务;通过WAP为移动电话互联网客户服务。 另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件) 那么,ASP.Net有哪些改进呢? 以上是语言本身的弱点,在功能方面ASP同样存在问题,第一是功能太弱,一些底层操作只能通过组件来完成,在这点上是远远比不上PHP/JSP,其次就是缺乏完善的纠错/调试功能,这点上ASP/PHP/JSP差不多。 那么,ASP.Net有哪些改进呢? 你可以通过继承已有的对象最大限度保护你以前的投资。并且C#和C++、Java一样提供了完善的调试/纠错体系。 掌握asp的特性而且一定要知道为什么。 如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。 如何更好的使自己的东西看上去很不错等等。其实这些都不是问题的实质,我们可以在实践中不断提升自己,不断充实自己。 ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 ASP的语言不仅仅只是命令格式差不多,而是包含在<%%>之内的命令完全就是VB语法。虽然ASP也是做为单独的一个技术来提出的,但他就是完全继承了VB所有的功能。 另外因为asp需要使用组件,所以了解一点组件的知识(ADODB也是组件) 不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍 学习是为了用的,是为了让你的程序产生价值,把握住这个原则会比较轻松点。除此之外,课外时间一定要多参加一些社会实践活动,来锻炼自己的能力。 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: Session:这个存储跟客户端会话过程的数据,默认20分钟失效 学习ASP其实应该上升到如何学习程序设计这种境界,其实学习程序设计又是接受一种编程思想。比如ASP如何学习,你也许在以前的学习中碰到过。以下我仔细给你说几点: 不是很难但是英文要有一点基础网上的教程很少有系统的详细的去买书吧,另不用专门学习vb关于vbscript脚本在asp教材都有介绍 如何学好ASP,以前也有人问过,把回答给你转过来看看能否对你有帮助: Application:这个存储服务端的数据,如果不清除,会直到web应用程序结束才清除(例如重启站点)
页:
[1]