人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當前位置:蘿卜系統下載站 > 技術開發教程 > 詳細頁面

轉:Visual Basic.NET迅速開發MIS系統(1)

轉:Visual Basic.NET迅速開發MIS系統(1)

更新時間:2022-07-06 文章作者:未知 信息來源:網絡 閱讀次數:

Visual Basic.NET快速開發MIS系統

2002-11-29· ·黎宇 ··yesky

  【摘 要】 本文介紹微軟最新技術Visual Basic.NET在數據庫開發方面的應用。結合數據庫系統開發的知識,介紹了物理表操作的方法,利用Visual Basic.NET的面向對象的特征,利用類的繼承知識,簡化了數據庫系統開發過程。

  引言

  以前版本的Visual Basic雖然號稱自己是一種OOP(面向對象)編程語言,但卻不是一個地地道道的OOP編程語言,最多只是半個面向對象的編程語言。但Visual Basic.NET已經是一種完全的面向對象的編程語言。他支持面向對象的所有基本特征:繼承、多態和重載。這使得以前在Visual Basic中很難或根本實現不了的問題,在Visual Basic.NET中可以順利的用簡單的方法實現。

  自定義數據操作類

  定義一個數據訪問的基類,并編寫有關數據庫操作的必要方法。

  定義一個數據訪問類,類名為CData。定義連接Oracle數據庫的方法ConnOracle,獲取數據集的方法GetDataSet, 獲取物理表的方法GetDataTable, 向物理表中插入一行數據的方法Insert, 向物理表中刪除數據的方法Delete, 向物理表中更新數據的方法Update。其實現方法不是本文的重點,在此僅給出代碼,不作詳細分析。代碼如下:

Public 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 = "Provider=MSDAORA.1;Password='" & UserPwd & "';User ID='" & UserId & "';Data Source='" & ServerName & "'"
  Try
   .Open()
  Catch er As Exception
   MsgBox(er.ToString)
  End Try
 End With
 mOleCnnDB = OleCnnDB
 Return OleCnnDB
End 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 = "SELECT * FROM " & TableName & " where " & 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 = "SELECT * FROM " & 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(" ")
 TableName = a(3)
 a = FieldName_Value.Split("=")
 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 <> 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 = "delete FROM " & TableName & " where " & strWhere
 myCommand.Connection = mOleCnnDB
 myCommand.CommandText = strSql
 Try
  myReader = myCommand.ExecuteReader()
  myReader.Close()
 Catch er As Exception
  MsgBox(er.ToString)
 End Try
End Sub
End Class

  定義一操作數據庫中物理表的類CData,此類繼承CDataBase,即:

Public Class CData:Inherits CDataBase

  此類應該由供用戶提供所操作的物理表的表名,指定了表名就可取得該表的所有性質。該表主要完成插入、刪除、更新功能。定義其屬性、方法如下:

  申明類CData的變量:

'所要操作的表名
Private Shared UpdateTableName As String
'所要操作的表對象
Public Shared UpdateDataTable As New DataTable()
'對應表的一行數據197
Public Shared ObjFields() As Object
'表的字段數
Public Shared FieldCount As Int16
'主關鍵字。我們假設每個物理表都有一個主關鍵字字段fSystemID
Public Shared SystemID As String

  說明:Shared 關鍵字指示一個或多個被聲明的編程元素將被共享。共享元素不關聯于某類或結構的特定實例。可以通過使用類名或結構名稱或者類或結構的特定實例的變量名稱限定共享元素來訪問它們。

  申明類CData的屬性UpdateTable,當向UpdateTable賦給了一個已知表的表名,就可確定表的字段數,定義出數據行。這里,先打開表,再重新定義數據行.

Public Property UpdateTable() As String
 Get
  UpdateTable = UpdateTableName
 End Get
 Set(ByVal Value As String)
  UpdateTableName = Value.Trim
  UpdateDataTable = DB.GetDataTable(UpdateTableName)
  UpdateTableFieldNames = UpdateDataTable.Clone
  FieldCount = UpdateDataTable.Columns.Count
  ReDim ObjFields(FieldCount - 1)
 End Set
End Property

'刪除由主關鍵值fSystemID指定的數據行
Public Sub Delete()
 Dim strSQL As String

 strSQL = "Delete from " & UpdateTableName & " where fSystemID=" & SystemID
 DB.Delete(strSQL)
 UpdateDataTable.Rows.Remove(GetRow)
End Sub

'向表UpdateTableName中插入一行數據。數據由ObjFields給出
Public Function Insert() As Boolean
 DB.Insert(UpdateTableName, ObjFields)
End Function

'更新表UpdateTableName所指定的行
Public Shadows Sub Update()
 Dim SetField As String
 Dim i As Int16

 For i = 1 To FieldCount - 1
  SetField = UpdateTableFieldNames.Columns(i).ColumnName & "=" & ObjFields(i)
  UpdateField(SetField)
 Next
End Sub

Public Sub UpdateField(ByVal SetField As String)
 Dim StrSQL As String
 StrSQL = "select * from " & UpdateTableName & " where fSystemID= " & SystemID
 DB.Update(StrSQL, SetField)
End Sub

'填充網絡數據
Public Overloads Sub FillGrid(ByVal GridName As DataGrid)
 GridName.DataSource = UpdateDataTable
End Sub

'把數據網格的當前行數據定寫入到輸入控件中
Public Sub DataGridToText(ByVal frm As Form)
 Dim RowIndex, i As Int16
 Dim value
 Dim obj As Control
 Dim DataGrid As New DataGrid()
 If FieldCount = 0 Then Exit Sub
  For Each obj In frm.Controls
   If obj.GetType.Name = "DataGrid" Then
    DataGrid = obj
    Exit For
   End If
  Next
  RowIndex = DataGrid.CurrentRowIndex
  For i = 1 To FieldCount - 1
   value = DataGrid.Item(RowIndex, i)
   If IsDBNull(value) = True Then
    value = ""
   End If
   For Each obj In frm.Controls '
    If obj.TabIndex = i Then
     obj.Text = value
     Exit For
    End If
   Next
  Next
End Sub


溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

網站地圖xml | 網站地圖html
主站蜘蛛池模板: 专栏| 南岸区| 崇信县| 沽源县| 安塞县| 宝山区| 湖南省| 报价| 奇台县| 凤山县| 阳新县| 尤溪县| 阿图什市| 双柏县| 平舆县| 顺义区| 九寨沟县| 东乌珠穆沁旗| 台州市| 刚察县| 桃园市| 庆元县| 阜平县| 兰西县| 平泉县| 浮梁县| 扶余县| 友谊县| 乌拉特中旗| 文化| 富民县| 隆回县| 陆丰市| 武宁县| 台前县| 普洱| 巴塘县| 太仆寺旗| 江山市| 宝丰县| 葫芦岛市|