当前位置:首页
开发技术指南» 文章正文
    引言:

    摘要: 如题,java/c/vc++/vb我都有一些项目经验,现在可能要用.net,希望能迅速越过语言层面,能很快上手,不知道看什么书好? 下载了一本《c#高级编程》(第二版),它的封面写written and tested for .net v1.0 ,这是什么东东?我只知道vs.net 2002和2003,还有下一版whidbey也快出来了。现在学这个是不是有些过时?不知道各版本之间有多大差异......
 ·foxmail加附件发送不出why    »显示摘要«
    摘要: 用的是5.0版本,发送邮件时不带附件,或者所带的是图片时,发送都没有问题。 但附件是exe rar zip 文件时邮件就会发不出去。会提示“smtp连接超时“ 个人认为是服务器将这类文件认为是病毒,所以拒收。 但可能也是别的原因,请大家发表高见。 谢谢! ......


关于事务处理

各位大虾:  
          我在做一个网络的MIS系统,源代码如下所示:  
                    dim   cn   ...  
                    dim   rs   ...  
                    opendatabase  
                    cn.execute   "create   table...."  
                    cn.close  
                    opendatabase  
                    set   rs.activeconnection=cn  
                    rs.open   "select   *from   table"  
                    rs.addnew  
                          rs.field()="first"  
                          .  
                          .  
                          .  
                    rs.update  
                    rs.close  
                    cn.close  
  麻烦大家看一下,我如果在这段代码中加入事务处理应该怎样做?  
  谢谢!!!

NO.1   作者: badroot

事务应该加在添加数据修改数据的开始处  
  在添加完或者修改完时候提交事务  
  还应该进行错误处理,当发生错误的时候返回事务                    
                    dim   cn   ...  
                    dim   rs   ...  
                    opendatabase  
                    开始事务  
                    on   error   goto   CheckErr  
                    cn.begintrans  
                          cn.execute   "create   table...."  
                          cn.close  
                          opendatabase  
                          set   rs.activeconnection=cn  
                          rs.open   "select   *from   table"  
                          rs.addnew  
                          rs.field()="first"  
                          .  
                          .  
                          .  
                        rs.update  
                  cn.committrans  
                  提交事务  
                  rs.close  
                  cn.close  
    CheckErr:  
                      if   err.number<>0   then  
                            msgbox   "错误号:"   &   err.number   &   vbcrlf   &   "错误信息:"   &   err.description  
                            on   error   goto   NextErr  
                            cn.RollbackTrans        
                      endif  
  NextErr:  
                  exit   sub  
                     
     
 

NO.2   作者: online

同意楼上  
   
  还可以使用  
   
    用VB和MTS开发多层数据库应用系统    
     
  作者:   于华   
   
  用VB和MTS开发多层数据库应用系统  
   
   
    MTS是微软为其Windows   NT操作系统推出的一个中间件产品,由于它具有强大的分布事务支持、安全管理、资源管理和多线程并发控制等特性,使其成为在Windows平台上开发大型数据库应用系统的首选产品。    
   
    由于MTS屏蔽了底层实现的复杂性,极大地简化了这类应用的开发,程序员可以将精力集中在业务逻辑上,因而有效地提高了软件的开发效率。本文将通过实例介绍用VB和MTS开发多层数据库应用系统的方法和步骤。    
   
    基于MTS开发多层数据库应用系统的步骤是:第一步,开发MTS组件提供服务,程序员可以用任何一种支持COM的语言编写MTS组件,如VB、VC、Delphi和COBOL等;第二步,分发MTS组件到MTS软件包中,并且把MTS软件包安装到MTS环境之中;第三步,编写客户端程序调用执行在MTS环境之中的MTS组件,以取得服务。详细开发过程如下:    
   
    1.   创建MTS组件    
    本例中我们将编写一个MTS组件,运行于中间层的应用服务器上,由它建立与数据库服务器的连接,完成对某课程的授课教师信息的查询。    
   
    启动Visual   Basic,新建一ActiveX   DLL项目。选择工程选单,在引用窗口中选中Microsoft   ActiveX   Object   Library   和Microsoft   Transaction   Sever   Type   Library。按“确定”将这两项加到项目中。    
   
    从工程选单中选择工程属性,在通用选项中将项目名称改为MtsDemo。线程模块选择分部线程DLL,将类模块名称改为Course,将下列程序加入类模块的通用声明中:    
   
    Option   Explicit    
   
    Public   Function   ListCourses(   ByVal   mcourse   as   String)   As   ADODB.Recordset    
   
       On   Error   GoTo   ErrorHandle    
   
       Dim   strSQL   As   String    
   
       Dim   objContext   As.ObjectContext    
   
       Set   objContext   =   GetObjectContext()    
   
         建立事务性组件    
   
       Dim   objADOConn   As   ADODB.Connection    
   
         利用ADO访问数据库    
   
       Dim   objRS   As   ADODB.Recordset    
   
       Set   objADOConn   =   New   ADODB.Connection    
   
       With   objADOConn    
   
       .connectiontimeout=10    
   
       .connectionstring="Provider=SQLOLEDB.1;UserID=sa;Initial   Catalog=DBcourse"    
   
       通过OLEDB建立与数据库的连接    
   
       .Open    
   
       End   with    
   
       Set   ObjRS   =   New   ADODB.Recordset    
   
       StrSQL="SELECT    
   
    Teacher.name,Teacher.sex,Techer.age,Teacher.edu_level,Teacher.tiltle"    
   
       strSQL=strSQL&&"   From   Teacher,TeacherCourse,Courses   "    
   
       strSQL=strSQL&&   "Where   Teacher.teacher_NO=TeacherCourse.teacher_no    
   
       and   TeacherCourse.course_no=Courses.course_no    
   
       and   Courses.course   like"   &&   mCourse   &&   ""    
   
    “like”关键字可实现模糊查询    
   
       ObjRS.Open   strSQL,   ObjADOConn    
   
         进行数据库查询    
   
       Set   ListCourses   =   ObjRS    
   
       ObjContext.SetComplte    
   
         若事务成功完成,则提交该事务    
   
       objADOConn.Close    
   
       Set   objADOConn   =   Nothing    
   
       Set   objRS=Nothing    
   
       strSQL   =   ""    
   
       关闭数据库连接,释放所有对象    
   
       Exit   Function    
   
    ErrorHandle:    
   
    ObjContext.   SetAbort    
   
    Set   ListCourses=Nothing    
   
         若事务失败,则回滚事务    
   
    End   Function    
   
    2.   注册MTS组件    
    所有运行于服务器端的ActiveX   DLL都应在MTS中注册,这是通过Transaction   Server   Explorer完成的。其过程如下:    
   
    (1)创建软件包    
   
    软件包是在同一进程中运行的组件集合,不同软件包中的组件以进程隔离的方式运行在隔离的进程中。在创建软件包时,开发者应尽量把共享资源的组件分配在同一软件包内;考虑到软件包中各个组件所共享的资源类型,可以把那些共享“昂贵”资源的组件编为一组。    
   
    (2)向软件包添加组件    
   
    在想安装组件的包中选择Component文件夹,单击Install   New   Component(s)   按钮,当提示添加文件时找到新生成的MtsDemo.dll文件将其加入。    
   
    3.   编写客户端程序    
    创建一个标准EXE项目。选择工程选单,接着选择引用,在引用窗口中选中刚才创建的MtsDemo,加入到项目中。    
   
    向窗体中添加如下内容:    
   
            名称       标题    
   
    标签       label1     请输入课程名:    
   
    文本框     txtcourse        
   
    命令按扭     cmdok    查询    
   
    数据网格     dgresult        
   
    再将下列程序加入通用声明中:    
   
    Private   Sub   cmdOK_Click()    
   
       Dim   rsResult   As   ADODB.Recordset    
   
       Dim   objMts   As   Object    
   
       Dim   mCourse   As   String    
   
       mCourse   =   Trim(txtCourse.Text)    
   
       Set   objMts   =   CreateObject(mtsDemo.Course)    
   
       Set   rsResult   =   objCourse.ListCourses(mCourse)    
   
       If   rsResult.EOF   Then    
   
       MsgBox   ("无满足条件的记录!")    
   
       Exit   Sub    
   
       End   If    
   
       Set   dgResult.DataSource   =   rsResult    
   
       Dgresult.Columns(0).Caption   =   "姓名"    
   
       Dgresult.Columns(1).Caption   =   "性别"    
   
       DgResult.Columns(2).Caption   =   "年龄"    
   
       Dgresult.Columns(3).Caption   =   "学历"    
   
       DgResult.Columns(4).Caption   =   "职称"    
   
       DgResult.Refresh    
   
       Set   objMts   =   Nothing    
   
    End   Sub    
   
    4.   运行客户端    
    首先将编写好的客户端程序进行编译发布,然后在Microsoft   Management   Console中找到新的软件包,击右键选择导出,将它导出到c:\Program   File\Packages中,在该文件夹的Client下自动生成了MtsDemo的客户端安装程序。在客户机上运行Client文件夹下的Setup.exe文件,再安装客户端程序即可运

NO.3   作者: yoki

dim   cn   ...  
                    dim   rs   ...  
                    dim   intFlag   as   integer  
                    on   error   goto   exiterr  
                    intFlag=cn.begintrans  
                    opendatabase  
                    cn.execute   "create   table...."  
                    cn.close  
                    opendatabase  
                    set   rs.activeconnection=cn  
                    rs.open   "select   *   from   table"  
                    rs.addnew  
                          rs.field()="first"  
                          .  
                          .  
                          .  
                    rs.update  
                    cn.committrans  
                    intFlag=0  
                    rs.close  
                    cn.close  
  exiterr:  
                if   intFlag=1   then   cn.Rollbacktrans

NO.4   作者: online

cn.execute   "create   table...."  
                    加入下面这句  
                    cn.committrans  
  你的连接到最后关闭即可  
                    cn.close  
                    opendatabase  
                    set   rs.activeconnection=cn  
 


    摘要: 我是国家重点大学计算机本科 2年。net经验 ......
» 本期热门文章:

©2000-2007 All Rights Reserved. 最佳浏览:1024X768 MSIE