高手指教。

解决方案 »

  1.   


    Option Explicit On 
    Option Strict OnImports System
    Imports System.Data
    Imports System.Windows.Forms
    Imports Microsoft.VisualBasic
    'DataAccess 类
    '实现(插入、更新、删除、执行事务等)数据访问操作
    Public Class clsDataAccess    '私有字段 - ADO.Net数据访问对象
        Private m_objSqlCommand As System.Data.OleDb.OleDbCommand = Nothing
        Private m_objSqlDataAdapter As System.Data.OleDb.OleDbDataAdapter = Nothing
        Private m_objSqlTransaction As System.Data.OleDb.OleDbTransaction = Nothing    '私有字段 - 数据连接源
        Private m_strConnectionSource As String = ""    '私有字段 - 查询超时
        Private m_intSqlTimeOut As Integer = 0    '私有字段 - 出错信息
        Private m_strErrMsg As String = ""
        '私有方法 - 获取应用程序根路径
        Private Function m_funGetAppRootPath() As String        Dim strAppRootPath As String = Application.StartupPath        If Right(strAppRootPath, 1) = "\" Then
               Return strAppRootPath
            Else
               Return strAppRootPath & "\"
            End If    End Function
        '标准构造函数1 - 使用连接字符串
        Public Sub New(ByVal strConnectionString As String, ByVal intTimeOut As Integer)        Me.DbConnection = New OleDb.OleDbConnection
            Me.DbRecordset = New DataSet        Try
                Me.m_intSqlTimeOut = intTimeOut
                Me.m_strConnectionSource = strConnectionString.Trim()
                Me.DbConnection.ConnectionString = Me.m_strConnectionSource
                Me.DbConnection.Open()        Catch objErr As Exception
                Me.m_strErrMsg = "初始化失败,参数提供的连接字符串无效!" & vbNewLine & _
                                 "[描述信息]:" & objErr.Message & vbCrLf & _
                                 "[错误来源]:" & objErr.Source & vbCrLf & _
                                 "[堆栈信息]:" & objErr.StackTrace
                Throw New Exception(Me.m_strErrMsg)        Finally
                Me.DbConnection.Close()
            End Try    End Sub
        '标准构造函数2 - 使用 UDL 连接文件
        Public Sub New(ByVal strUdlFileName As String, ByVal blnUseLocalPath As Boolean, ByVal intTimeOut As Integer)        Me.DbConnection = New OleDb.OleDbConnection
            Me.DbRecordset = New DataSet        Me.m_strConnectionSource = "FILE NAME="
            If blnUseLocalPath = True Then
               Me.m_strConnectionSource &= Me.m_funGetAppRootPath() & strUdlFileName.Trim()
            Else
               Me.m_strConnectionSource &= strUdlFileName.Trim()
            End If        Try
                Me.m_intSqlTimeOut = intTimeOut
                Me.DbConnection.ConnectionString = Me.m_strConnectionSource
                Me.DbConnection.Open()        Catch objErr As Exception
                Me.m_strErrMsg = "初始化失败,参数提供的Udl连接文件无效!" & vbNewLine & _
                                 "[描述信息]:" & objErr.Message & vbCrLf & _
                                 "[错误来源]:" & objErr.Source & vbCrLf & _
                                 "[堆栈信息]:" & objErr.StackTrace
                Throw New Exception(Me.m_strErrMsg)        Finally
                Me.DbConnection.Close()
            End Try    End Sub
        '公有字段 - ADO.Net连接对象
        Public DbConnection As System.Data.OleDb.OleDbConnection = Nothing
        '公有字段 - ADO.Net数据集对象
        Public DbRecordset As System.Data.DataSet = Nothing
        '公有只读属性 - 数据连接源
        Public ReadOnly Property ConnectionSource() As String        Get
                Return Me.m_strConnectionSource.Trim()
            End Get    End Property
        '公有读写属性 - Sql超时
        Public Property SqlTimeOut() As Integer        Get
                Return Me.m_intSqlTimeOut
            End Get        Set(ByVal intValue As Integer)
                Me.m_intSqlTimeOut = intValue
            End Set    End Property
        '公有方法 - 获得条件参数指定的数据集
        Public Sub GetDataRecordset(ByVal strDataSource As String, ByVal strDataTableName As String, _
                                    Optional ByVal strSelectList As String = "*", Optional ByVal blnDistinct As Boolean = False, _
                                    Optional ByVal strProtasis As String = "", Optional ByVal strGroupList As String = "", _
                                    Optional ByVal strOrderList As String = "", Optional ByVal blnOrderASC As Boolean = True)        Dim strSqlSelect As String = "SELECT " & Convert.ToString(IIf(blnDistinct = True, "DISTINCT ", "")) & strSelectList.Trim() & _
                                         " FROM " & strDataSource.Trim() & _
                                         Convert.ToString(IIf(strProtasis = "", "", " WHERE " & strProtasis.Trim())) & _
                                         Convert.ToString(IIf(strGroupList = "", "", " GROUP BY " & strGroupList.Trim())) & _
                                         Convert.ToString(IIf(strOrderList = "", "", " ORDER BY " & strOrderList.Trim())) & _
                                         Convert.ToString(IIf(blnOrderASC = True, " ASC", " DESC"))