|
<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 = &quot rovider=MSDAORA.1 assword='&quot; &amp;#38; UserPwd &amp;#38; &quot;';User ID='&quot; &amp;#38; UserId &amp;#38; &quot;';Data Source='&quot; &amp;#38; ServerName &amp;#38; &quot;'&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 = &quot;SELECT * FROM &quot; &amp;#38; TableName &amp;#38; &quot; where &quot; &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 = &quot;SELECT * FROM &quot; &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(&quot; &quot;) TableName = a(3) a = FieldName_Value.Split(&quot;=&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 &lt;&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 = &quot;delete FROM &quot; &amp;#38; TableName &amp;#38; &quot; where &quot; &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">下一页>></span></p></p> |
|