设为首页收藏本站language 语言切换
查看: 1285|回复: 0
收起左侧

[VB]:用继承加速MIS开发

[复制链接]
发表于 2010-2-25 10:24:54 | 显示全部楼层 |阅读模式
<p >本文介绍微软最新技术Visual Basic.NET在数据库开发方面的应用。结合数据库系统开发的知识,介绍了物理表操作的方法,利用Visual Basic.NET的面向对象的特征,利用类的继承知识,简化了数据库系统开发过程。<p >Visual Basic.NET是Visual Basic的一个后继版本,但二者之间的差别是十分巨大。虽然以前版本的Visual Basic号称自己是一种OOP(面向对象)编程语言,但却并不是一个地地道道的OOP编程语言,最多只是半个面向对象的编程语言。实际上他是一种面向事件的编程语言。正是由于这种原因,以前的Visual Basic在功能上相对较弱。但自从微软推出Visual Basic.NET以后,这种情况就大为改变,Visual Basic.NET已经是一种完全的面向对象的编程语言,支持面向对象的基本特征:继承、多态和重载。这使得以前在VISUAL BASIC中很难或根本实现不了的问题,在VISUAL BASIC.NET中可以顺利、简便的实现。<p >本文中就是介绍面向对象的Visual Basic.NET语言的继承特征,如何在数据库信息管理系统软件中应用。<p ><center><font color="#000099"><strong>自定义数据操作类</strong></font></center><p ><b>定义一个数据访问的基类,并编写有关数据库操作的必要方法。</b><p >定义一个数据访问类,类名为CData。定义连接Oracle数据库的方法ConnOracle,获取数据集的方法GetDataSet,获取物理表的方法GetDataTable,向物理表中插入一行数据的方法Insert,向物理表中删除数据的方法Delete,向物理表中更新数据的方法Update。其实现方法不是本文的重点,在此仅给出代码,不作详细分析。代码如下:<p ><ccid_nobr><table align="center" border="1" bordercolordark="#FFFFFF" bordercolorlight="black" cellpadding="2" cellspacing="0" width="550"><tr><td bgcolor="e6e6e6" class="code"><pre><ccid_code>ublic Class CDataBase    Dim OleCnnDB As New OleDbConnection()'连接Oracle数据库,ServerName:服务器名,UserId:用户名,UserPwd:用户密码Public Function ConnOracle(ByVal ServerName As String, ByVal UserId As String,ByVal UserPwd As String) As OleDbConnection            Dim OleCnnDB As New OleDbConnection()            With OleCnnDB                  .ConnectionString = &amp;quotrovider=MSDAORA.1assword='&amp;quot;                  &amp;amp;#38; UserPwd &amp;amp;#38; &amp;quot;';User ID='&amp;quot; &amp;amp;#38; UserId &amp;amp;#38; &amp;quot;';Data Source='&amp;quot; &amp;amp;#38; ServerName &amp;amp;#38; &amp;quot;'&amp;quot;                Try                    .Open()                Catch er As Exception                    MsgBox(er.ToString)                End Try            End With            mOleCnnDB = OleCnnDB      Return OleCnnDBEnd Function '获取数据集。TableName:表名,strWhere:条件        Public Overloads Function GetDataSet(ByVal TableName As String,        ByVal strWhere As String) As DataSet            Dim strSql As String            Dim myDataSet As New DataSet()            Dim myOleDataAdapter As New OleDbDataAdapter()            myOleDataAdapter.TableMappings.Add(TableName, TableName)            strSql = &amp;quot;SELECT * FROM &amp;quot; &amp;amp;#38; TableName &amp;amp;#38; &amp;quot; where &amp;quot; &amp;amp;#38; strWhere            myOleDataAdapter.SelectCommand = New OleDbCommand(strSql, mOleCnnDB)            Try                myOleDataAdapter.Fill(myDataSet)            Catch er As Exception                MsgBox(er.ToString)            End Try            Return myDataSet        End Function'获取物理表。TableName:表名        Public Overloads Function GetDataTable(ByVal TableName As String)        As DataTable            Dim myDataSet As New DataSet()            myDataSet = GetDataSet(TableName)            Return myDataSet.Tables(0)        End Function        '获取物理表。TableName:表名,strWhere:条件        Public Overloads Function GetDataTable(ByVal TableName As String,        ByVal strWhere As String) As DataTable            Dim myDataSet As New DataSet()            myDataSet = GetDataSet(TableName, strWhere)            Return myDataSet.Tables(0)        End Function   '向物理表中插入一行数据。TableName:表名,Value:行数据,BeginColumnIndex:开始列        Public Overloads Function Insert(ByVal TableName As String,         ByVal Value As Object, Optional ByVal BeginColumnIndex As Int16 = 0)        As Boolean            Dim myDataAdapter As New OleDbDataAdapter()            Dim strSql As String            Dim myDataSet As New DataSet()            Dim dRow As DataRow            Dim i, len As Int16            strSql = &amp;quot;SELECT * FROM &amp;quot; &amp;amp;#38; TableName            myDataAdapter.SelectCommand = New OleDbCommand(strSql, mOleCnnDB)            Dim custCB As OleDbCommandBuilder = New OleDbCommandBuilder(myDataAdapter)            myDataSet.Tables.Add(TableName)            myDataAdapter.Fill(myDataSet, TableName)            dRow = myDataSet.Tables(TableName).NewRow            len = Value.Length            For i = BeginColumnIndex To len - 1                If Not (IsDBNull(Value(i)) Or IsNothing(Value(i))) Then                    dRow.Item(i) = Value(i)                End If            Next            myDataSet.Tables(TableName).Rows.Add(dRow)            Try                myDataAdapter.Update(myDataSet, TableName)            Catch er As Exception                MsgBox(er.ToString)                Return False            End Try            myDataSet.Tables.Remove(TableName)            Return True        End Function          '更新物理表的一个字段的值。strSql:查询语句,FieldName_Value:字段及与对应的值        Public Overloads Sub Update(ByVal strSql As String,         ByVal FieldName_Value As String)            Dim myDataAdapter As New OleDbDataAdapter()            Dim myDataSet As New DataSet()            Dim dRow As DataRow            Dim TableName, FieldName As String            Dim Value As Object            Dim a() As String            a = strSql.Split(&amp;quot; &amp;quot;)            TableName = a(3)            a = FieldName_Value.Split(&amp;quot;=&amp;quot;)            FieldName = a(0).Trim            Value = a(1)            myDataAdapter.SelectCommand = New OleDbCommand(strSql, mOleCnnDB)            Dim custCB As OleDbCommandBuilder = New OleDbCommandBuilder(myDataAdapter)            myDataSet.Tables.Add(TableName)            myDataAdapter.Fill(myDataSet, TableName)            dRow = myDataSet.Tables(TableName).Rows(0)            If Value &amp;lt;&amp;gt; Nothing Then                dRow.Item(FieldName) = Value            End If            Try                myDataAdapter.Update(myDataSet, TableName)                myDataSet.Tables.Remove(TableName)            Catch er As Exception                MsgBox(er.ToString)            End Try        End Sub              '删除物理表的数据。TableName:表名,strWhere:条件         Public Overloads Sub Delete(ByVal TableName As String,         ByVal strWhere As String)            Dim myReader As OleDbDataReader            Dim myCommand As New OleDbCommand()            Dim strSql As String            strSql = &amp;quot;delete  FROM &amp;quot; &amp;amp;#38; TableName &amp;amp;#38; &amp;quot; where &amp;quot; &amp;amp;#38; strWhere            myCommand.Connection = mOleCnnDB            myCommand.CommandText = strSql            Try                myReader = myCommand.ExecuteReader()                myReader.Close()            Catch er As Exception                MsgBox(er.ToString)            End Try        End SubEnd Class</ccid_code></pre></td></tr></table></ccid_nobr><p ><b>定义一操作数据库中物理表的类CData,此类继承CDataBase,</b>即:<p ><ccid_nobr><table align="center" border="1" bordercolordark="#FFFFFF" bordercolorlight="black" cellpadding="2" cellspacing="0" width="550"><tr><td bgcolor="e6e6e6" class="code"><pre><ccid_code>ublic Class CData:Inherits CDataBase</ccid_code></pre></td></tr></table></ccid_nobr><p >此类应该由供用户提供所操作的物理表的表名,指定了表名就可取得该表的所有性质。该表主要完成插入、删除、更新功能。定义其属性、方法如下:<p >申明类CData的变量:<p ><ccid_nobr><table align="center" border="1" bordercolordark="#FFFFFF" bordercolorlight="black" cellpadding="2" cellspacing="0" width="550"><tr><td bgcolor="e6e6e6" class="code"><pre><ccid_code>'所要操作的表名Private Shared UpdateTableName As String '所要操作的表对象    Public Shared UpdateDataTable As New DataTable()'对应表的一行数据197Public Shared ObjFields() As Object  '表的字段数Public Shared FieldCount As Int16'主关键字。我们假设每个物理表都有一个主关键字字段fSystemID          Public Shared SystemID As String</ccid_code></pre></td></tr></table></ccid_nobr><p align="center"><font color="FF0000" >1</font>23<span class="content01">下一页&gt;&gt;</span></p></p>
您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-10 15:16 , Processed in 0.059236 second(s), 22 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表