精华区 [关闭][返回]

当前位置:网易精华区>>讨论区精华>>编程开发>>● VB和Basic>>〓〓..技术文章连载..〓〓>>跟我学用VB的类(系列)>>(转)跟我学用VB的类(系列)之第六天(二)

主题:(转)跟我学用VB的类(系列)之第六天(二)
发信人: pack27()
整理人: gzwsh(2001-05-12 22:56:12), 站内信件
第六天  有数据库功能的类(二) 

    最后添加一个窗体:上面有三个文本框(Text1、Text2、Text3)四个CommandButton(cmdAddNew、cmdDelete、cmdQuery、cmdUpdate)好了,现在把下面的代码拷贝到这个窗体的代码部份。 
Option Explicit 
Public WithEvents MyUser As cUsers 
Private Sub cmdAddNew_Click() 
    MyUser.UserID = Text1 
    MyUser.UserName = Text2 
    MyUser.UserPassword = Text3 
    MyUser.SaveUserInfo CLng(Text1), 0 
End Sub 
Private Sub cmdDelete_Click() 
    If MyUser.DeleteUserInfo(CLng(Text1)) Then 
        Text1 = "" 
        Text2 = "" 
        Text3 = "" 
    End If 
End Sub 
Private Sub cmdQuery_Click() 
    If MyUser.GetUserInfo(CLng(Text1)) Then 
        Text1 = MyUser.UserID 
        Text2 = MyUser.UserName 
        Text3 = MyUser.UserPassword 
    End If 
End Sub 
Private Sub cmdUpdate_Click() 
    MyUser.UserID = Text1 
    MyUser.UserName = Text2 
    MyUser.UserPassword = Text3 
    MyUser.SaveUserInfo CLng(Text1), 1 
End Sub 
Private Sub Form_Load() 
    Set MyUser = New cUsers 
    MyUser.SetConn conn   '把数据库联接传递给类 
End Sub 
Private Sub Form_Unload(Cancel As Integer) 
    conn.Close 
    Set conn = Nothing 
    Set MyUser = Nothing 
End Sub 
Private Sub MyUser_ReferLost(ByVal Information As String) 
    MsgBox Information 
End Sub 
Private Sub MyUser_ReferSucceed(ByVal Information As String) 
    MsgBox Information 
End Sub 
    我问一下,您的数据库按我的格式建好了吗?如果建好了,只要把标准模块中的strConnString中的内容改为与您的实际相符的内容就可以运行这个程序了。 
    我们来看看上面这些代码中的一些细节问题: 
一、Connection的问题: 
    您可能会问,这个类中封装了所有对ADO数据对象的访问,但为什么不把Connection这个对象一起放在这个类中,而要写在标准模块中呢?这个问题是这样的,当您用Connection的Open方法时,Connection对象会建立与数据库连接。这时,如果您以另一个Connection对象的Open方法,用同样的ConnectionString属性联接这个数据库时,尽管它们连接的是同一个数据库,但您的程序中也会产生两个数据库联接。因为类的实例可以不只一个,如果把Connection封装到类中,在同一个程序中的这个类的不同实例中都会产生一个与数据库的联接,这样做的结果是,造成资源的浪费。所以我们在标准模块中打开这个Connection,每个类的实例共享这一个与数据库的连接。 
二、方法的返回值: 
    你看到了在这个cUsers类的方法中是有返回值的,而且是一个Boolean型的。我建议您的类不要用无返回值的方法,因为返回值可以使您知道这个方法的执行是否是成功的。当然您可以根据需要自己定义返回值的类型,不一定是Boolean型的。 
三、用事件向用户返回信息 
    我们看到,在这个例子中,我们没有在类中直接用Msgbox向用户返回信息,而是把这些信息放在两个事件中,通过事件返回给用户的。这样做比用Msgbox更好的是,给类的使用者更大的灵活性,他们可以决定是否把这些信息给程序的使用者看。在事件的参数中,我们还可以加上更多的参数,为类的使用者提供更多的信息,让他们可以用更多的方法来处理这些信息。调用事件的语法是RaiseEvent EventName(ParameterList)。 
四、类在数据库应用程序中使用的理由: 
    在数据库应用程序中使用类,可以把数据库访问和应用程序控制分离,也就是说,访问数据库方面的功能放在类里,应用程序的界面与数据库访问功能无关,这样,就可以实现,由熟悉数据库的人写类的部份,由熟悉界面的人写程序界面部份。而且这样的程序结构更合理。 
    我们用了这几天的时间,讨论了类的一些内容,到现在为止,如果您完全理解了这几篇贴子,应该对类有了一个比较详细地了解了。但一切在于动手,如果您只是看过这几篇贴子,而没有动手练习,那您可能有些收获,但不会对类有很深的理解的。 

    我们休息几天,好好理解一下这几天讨论过的内容,做些练习吧。下次,我们要讨论另一种类--集合类--的问题。下次见吧。 

(未完待续)


----
......
不想想起偏更记起
假装开心心更悲
辗转翻侧因为你起
愿你不是你
......
可捒选不恋上你么
可捒选不想你么
种种捒选可以许多
若我不是我
...... 

[关闭][返回]