数据访问层-SQL 2005-代码错误 [英] Data Access Layer - Sql 2005 - Error in code

查看:71
本文介绍了数据访问层-SQL 2005-代码错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Visual Studio的新宠,正在为我的公司编写ERP.
参考一本书,我正在准备数据访问层(四层体系结构)的代码,但是它给出了以下错误.

如果时间允许,请帮助我更正代码.谢谢.

01.一个命名空间DataService.
02.两个类DataServer&通用参数.
03.两个附加函数:ConvertToSqlParameters& makeclear.

错误:
01.未声明privateParameterList(makeclear函数和常规参数的子BuildParameter"中的错误)
02.未声明privateExceptionMessage(makeclear函数出错)
03.未声明SQLDataType(常规参数的子BuildParameter中的错误)
04.未声明ConvertToSqlParameters(在DataServer的runTransaction函数中)


I''m a new bee to Visual Studio and writing an ERP for my Co.
Refering to a book, I''m preparing the code of DATA ACCESS LAYER (four layer architecture), but it gives error as given below.

Please help me to correct the code if time permits you to do so. Thanks.

01. One Namespace DataService.
02. Two classes DataServer & GeneralParameters.
03. Two additional functions: ConvertToSqlParameters & makeclear.

Errors:
01. privateParameterList is not declared (Error in makeclear function & Sub BuildParameter of General Parameter)
02. privateExceptionMessage is not declared (Error in makeclear function)
03. SQLDataType is not declared (Error in Sub BuildParameter of General Parameter)
04. ConvertToSqlParameters is not declared (in function runTransaction of DataServer)


'myVbDataAccessLayer
'Import ADO.net namespaces
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports System.Xml
Imports System.Collections
Imports System.Diagnostics


'Declare the namespace DataService and the Class DataServer
Namespace DataService
    Public Class DataServer

        Private myConnectionString As String
        Private myConnection As SqlConnection
        Private myCommand As SqlCommand
        Private myDataReader As SqlDataReader
        Private myXmlReader As XmlReader
        Private mySqlDataAdapter As SqlDataAdapter
        Private myDataSet As DataSet
        'The variable PrivateParameterList holds parameters which are passed from the Business Layer
        Private privateParameterList As ArrayList = New ArrayList()
        Private Const privateExceptionMessage As String = "Data Application Error"

        'SqlDataType (Enum)

        'constructor of DataServer class
        Public Sub New(ByVal ConnectionString As String)
            myConnectionString = ConnectionString
        End Sub

        'class methods in the DataServer class

        Public Function returnDataSet(ByVal SPName As String, Optional ByVal TableName As String = Nothing) As DataSet
            'Accepts a stored procedure and a table name and returns a dataset.
            Dim privateUsedParameter As GeneralParameter
            Dim privateParameter As SqlParameter
            Dim usedEnumerator As IEnumerator = privateParameterList.GetEnumerator()

            Try
                myConnection = New SqlConnection(myConnectionString)
                Dim PrivateDataSet As New DataSet()
                myCommand = New SqlCommand(SPName, myConnection)
                myCommand.CommandType = CommandType.StoredProcedure

                Do While (usedEnumerator.MoveNext())
                    privateUsedParameter = Nothing
                    privateUsedParameter = usedEnumerator.Current
                    privateParameter = ConvertToSqlParameters(privateUsedParameter)
                    myCommand.Parameters.Add(privateParameter)
                Loop

                mySqlDataAdapter = New SqlDataAdapter(myCommand)
                If TableName = Nothing Then
                    mySqlDataAdapter.Fill(PrivateDataSet)
                Else
                    mySqlDataAdapter.Fill(PrivateDataSet, TableName)
                End If

                Return PrivateDataSet

            Catch ExceptionObject As Exception
                Throw New Exception(privateExceptionMessage, ExceptionObject)
            Finally
                myConnection.Close()

            End Try


        End Function



        Public Function runTransaction(ByVal SPName As String) As ArrayList

            Dim privateUsedParameter As GeneralParameter
            Dim privateParameter As SqlParameter
            Dim usedEnumerator As IEnumerator = privateParameterList.GetEnumerator()
            Dim outputParameters As New ArrayList()
            Dim privateParameterOut As SqlParameter
            Dim privateConnection As SqlConnection   '************ additionally added
            Dim privateCommand As New SqlCommand    '************ additionally added
            Dim privateConnectionString As String  '************ additionally added


            Try
                privateConnection = New SqlConnection(privateConnectionString)
                privateCommand = New SqlCommand(SPName, privateConnection)
                privateCommand.CommandType = CommandType.StoredProcedure

                Do While (usedEnumerator.MoveNext())
                    privateUsedParameter = Nothing
                    privateUsedParameter = usedEnumerator.Current
                    privateParameter = convertToSqlParameters(privateUsedParameter)
                    privateCommand.parameters.add(privateParameter)
                Loop

                privateConnection.open()
                privateCommand.ExecuteNonQuery()

                For Each privateParameterOut In privateCommand.parameters
                    If privateParameterOut.Direction = ParameterDirection.Output Or privateParameterOut.Direction = ParameterDirection.ReturnValue Then outputParameters.Add(privateParameterOut.Value)
                    'End If
                Next
                Return outputParameters

            Catch ExceptionObject As Exception
                Throw New Exception(privateExceptionMessage, ExceptionObject)
            Finally
                privateConnection.close()
            End Try

        End Function


        'Public Function returnArrayList(ByVal SPName As String) As ArrayList
        'End Function
    End Class


    '*******************
    'General Parameter Class begins

    Public Class GeneralParameter
        Public Name As String
        Public value As Object
        Public DataType As SqlDataType
        Public Size As Integer
        Public DirectionUsed As ParameterDirection



        Sub New(ByVal pName As String, _
            Optional ByVal pValue As Object = Nothing, _
            Optional ByVal pSqlType As SqlDataType = Nothing, _
            Optional ByVal pSize As Integer = Nothing, _
            Optional ByVal pDirection As ParameterDirection = ParameterDirection.Input)

            Name = pName
            value = pValue
            DataType = pSqlType
            Size = pSize
            DirectionUsed = pDirection

        End Sub


        Public Sub BuildParameter(ByVal ParameterName As String, _
                                  Optional ByVal Value As Object = Nothing, _
                                  Optional ByVal SQLType As SQLDataType = Nothing, _
                                  Optional ByVal Size As Integer = Nothing, _
                                  Optional ByVal Direction As ParameterDirection = ParameterDirection.Input)
            Dim buildDataType As SqlDbType
            Dim buildParameter As GeneralParameter = Nothing

            Select Case SQLType
                Case SQLDataType.SqlString
                    buildDataType = SqlDbType.VarChar
                Case SqlDataType.SqlChar
                    buildDataType = SqlDbType.Char
                Case SQLDataType.SqlInt
                    buildDataType = SqlDbType.Int
                Case SQLDataType.SqlBit
                    buildDataType = SqlDbType.Bit
                Case SQLDataType.SqlDateTime
                    buildDataType = SqlDbType.DateTime
                Case SQLDataType.SqlDecimal
                    buildDataType = SqlDbType.Decimal
                Case SQLDataType.SqlMoney
                    buildDataType = SqlDbType.Money
                Case SQLDataType.SqlImage
                    buildDataType = SqlDbType.Image
            End Select

            buildParameter = New GeneralParameter(ParameterName, Value, buildDataType, Size, Direction)
            privateParameterList.Add(buildParameter)

        End Sub



        Private Function ConvertToSqlParameters(ByVal passedParameter As GeneralParameter) As SqlParameter
            Dim returnSqlParameter As SqlParameter = New SqlParameter()
            returnSqlParameter.ParameterName = passedParameter.Name
            returnSqlParameter.Value = passedParameter.value
            returnSqlParameter.SqlDbType = passedParameter.DataType
            returnSqlParameter.Size = passedParameter.Size
            returnSqlParameter.Direction = passedParameter.DirectionUsed
            Return returnSqlParameter
        End Function

        Public Sub makeClear()
            Try
                privateParameterList.Clear()
            Catch parameterException As Exception
                Throw New Exception(privateExceptionMessage & "Parameter List did not clear", parameterException)
            End Try
        End Sub


    End Class

End Namespace

推荐答案



1.未声明privateParameterList(makeclear函数和常规参数的子BuildParameter"中的错误)

溶胶:-privateParameterList在DataServer类中声明,并尝试在GeneralParameter类的方法中使用.

2:-未声明privateExceptionMessage(makeclear函数中的错误)

索尔:与上面讨论的范围相同的问题.

3. SqlDataType未在您的代码中声明.

4.在类DataServer中未声明ConvertToSqlParameters.

我想您应该参考此链接.

在VB.NET中进行面向对象的编程
Hi,

1. privateParameterList is not declared (Error in makeclear function & Sub BuildParameter of General Parameter)

sol:- privateParameterList is declared in class DataServer and trying to use in method of GeneralParameter class.

2:- privateExceptionMessage is not declared (Error in makeclear function)

Sol: same problem of scope as discusses above.

3. SqlDataType is not declare in your code.

4. ConvertToSqlParameters is not declared in class DataServer .

I thik you should refer this link.

Object Oriented Programming In VB.NET




我尝试编写用于修复错误的代码,并且您必须验证其中的逻辑.

Hi,

I try to make for codes to fix bugs, and you must verify the logics inside.

'myVbDataAccessLayer
'Import ADO.net namespaces
Imports System.Data
Imports System.Data.SqlClient
Imports System.Data.SqlTypes
Imports System.Xml
Imports System.Collections
Imports System.Diagnostics


'Declare the namespace DataService and the Class DataServer
Namespace DataService
    Public Class DataServer

        Private myConnectionString As String
        Private myConnection As SqlConnection
        Private myCommand As SqlCommand
        Private myDataReader As SqlDataReader
        Private myXmlReader As XmlReader
        Private mySqlDataAdapter As SqlDataAdapter
        Private myDataSet As DataSet
        'The variable PrivateParameterList holds parameters which are passed from the Business Layer
        Private privateParameterList As ArrayList = New ArrayList()
        Private Const privateExceptionMessage As String = "Data Application Error"

        'SqlDataType (Enum)

        'constructor of DataServer class
        Public Sub New(ByVal ConnectionString As String)
            myConnectionString = ConnectionString
        End Sub

        'class methods in the DataServer class

        Public Function returnDataSet(ByVal SPName As String, Optional ByVal TableName As String = Nothing) As DataSet
            'Accepts a stored procedure and a table name and returns a dataset.
            Dim privateUsedParameter As GeneralParameter
            Dim privateParameter As SqlParameter
            Dim usedEnumerator As IEnumerator = privateParameterList.GetEnumerator()

            Try
                myConnection = New SqlConnection(myConnectionString)
                Dim PrivateDataSet As New DataSet()
                myCommand = New SqlCommand(SPName, myConnection)
                myCommand.CommandType = CommandType.StoredProcedure

                Do While (usedEnumerator.MoveNext())
                    privateUsedParameter = Nothing
                    privateUsedParameter = usedEnumerator.Current
                    privateParameter = GeneralParameter.ConvertToSqlParameters(privateUsedParameter)
                    myCommand.Parameters.Add(privateParameter)
                Loop

                mySqlDataAdapter = New SqlDataAdapter(myCommand)
                If TableName = Nothing Then
                    mySqlDataAdapter.Fill(PrivateDataSet)
                Else
                    mySqlDataAdapter.Fill(PrivateDataSet, TableName)
                End If

                Return PrivateDataSet

            Catch ExceptionObject As Exception
                Throw New Exception(privateExceptionMessage, ExceptionObject)
            Finally
                myConnection.Close()

            End Try


        End Function



        Public Function runTransaction(ByVal SPName As String) As ArrayList

            Dim privateUsedParameter As GeneralParameter
            Dim privateParameter As SqlParameter
            Dim usedEnumerator As IEnumerator = privateParameterList.GetEnumerator()
            Dim outputParameters As New ArrayList()
            Dim privateParameterOut As SqlParameter
            Dim privateConnection As SqlConnection   '************ additionally added
            Dim privateCommand As New SqlCommand    '************ additionally added
            Dim privateConnectionString As String  '************ additionally added


            Try
                privateConnection = New SqlConnection(privateConnectionString)
                privateCommand = New SqlCommand(SPName, privateConnection)
                privateCommand.CommandType = CommandType.StoredProcedure

                Do While (usedEnumerator.MoveNext())
                    privateUsedParameter = Nothing
                    privateUsedParameter = usedEnumerator.Current
                    privateParameter = GeneralParameter.ConvertToSqlParameters(privateUsedParameter)
                    privateCommand.parameters.add(privateParameter)
                Loop

                privateConnection.open()
                privateCommand.ExecuteNonQuery()

                For Each privateParameterOut In privateCommand.parameters
                    If privateParameterOut.Direction = ParameterDirection.Output Or privateParameterOut.Direction = ParameterDirection.ReturnValue Then outputParameters.Add(privateParameterOut.Value)
                    'End If
                Next
                Return outputParameters

            Catch ExceptionObject As Exception
                Throw New Exception(privateExceptionMessage, ExceptionObject)
            Finally
                privateConnection.close()
            End Try

        End Function


        'Public Function returnArrayList(ByVal SPName As String) As ArrayList
        'End Function
    End Class


    '*******************
    'General Parameter Class begins

    Public Class GeneralParameter
        Public Name As String
        Public value As Object
        Public DataType As SqlDataType
        Public Size As Integer
        Public DirectionUsed As ParameterDirection
        Private privateParameterList As ArrayList = New ArrayList()
        Private Const privateExceptionMessage As String = "Data Application Error"

        Sub New(ByVal pName As String, _
            Optional ByVal pValue As Object = Nothing, _
            Optional ByVal pSqlType As SqlDataType = Nothing, _
            Optional ByVal pSize As Integer = Nothing, _
            Optional ByVal pDirection As ParameterDirection = ParameterDirection.Input)

            Name = pName
            value = pValue
            DataType = pSqlType
            Size = pSize
            DirectionUsed = pDirection

        End Sub


        Public Sub BuildParameter(ByVal ParameterName As String, _
                                  Optional ByVal Value As Object = Nothing, _
                                  Optional ByVal SQLType As SQLDataType = Nothing, _
                                  Optional ByVal Size As Integer = Nothing, _
                                  Optional ByVal Direction As ParameterDirection = ParameterDirection.Input)
            Dim buildDataType As SqlDbType
            Dim buildParameter As GeneralParameter = Nothing

            Select Case SQLType
                Case SQLDataType.SqlString
                    buildDataType = SqlDbType.VarChar
                Case SqlDataType.SqlChar
                    buildDataType = SqlDbType.Char
                Case SQLDataType.SqlInt
                    buildDataType = SqlDbType.Int
                Case SQLDataType.SqlBit
                    buildDataType = SqlDbType.Bit
                Case SQLDataType.SqlDateTime
                    buildDataType = SqlDbType.DateTime
                Case SQLDataType.SqlDecimal
                    buildDataType = SqlDbType.Decimal
                Case SQLDataType.SqlMoney
                    buildDataType = SqlDbType.Money
                Case SQLDataType.SqlImage
                    buildDataType = SqlDbType.Image
            End Select

            buildParameter = New GeneralParameter(ParameterName, Value, buildDataType, Size, Direction)
            privateParameterList.Add(buildParameter)

        End Sub

        Public Shared Function ConvertToSqlParameters(ByVal passedParameter As GeneralParameter) As SqlParameter
            Dim returnSqlParameter As SqlParameter = New SqlParameter()
            returnSqlParameter.ParameterName = passedParameter.Name
            returnSqlParameter.Value = passedParameter.value
            returnSqlParameter.SqlDbType = passedParameter.DataType
            returnSqlParameter.Size = passedParameter.Size
            returnSqlParameter.Direction = passedParameter.DirectionUsed
            Return returnSqlParameter
        End Function

        Public Sub makeClear()
            Try
                privateParameterList.Clear()
            Catch parameterException As Exception
                Throw New Exception(privateExceptionMessage & "Parameter List did not clear", parameterException)
            End Try
        End Sub


    End Class

End Namespace


嗨!

当我尝试从另一个名称空间和类调用BUILDPARAMETER时,它说它不是DataService.DataServer的成员.您可以更正代码吗?


**************************************

导入myVbDataAccessLayer.DataService


命名空间BusinessObjects

---------
---------
---------
---------
---------
---------
---------
---------


Hi!

When I try to call BUILDPARAMETER (from another namespace & class), it says the same is not a member of DataService.DataServer. Could you correct the code.


*******************************

Imports myVbDataAccessLayer.DataService


Namespace BusinessObjects

---------
---------
---------
---------
---------
---------
---------
---------


Public Function GetAccountDetail(ByVal cat As String) As DataSet
         Dim localDSOutput As DataSet
         Dim ParamsStoredProcedure As String = "GetAccountByCat"
         Try
             Dim localOutPutServer As New DataServer(PrivateConnectionString)
             localOutPutServer.BUILDPARAMETER( _
             "@AccCat", cat, SqlDataType.SqlChar, , ParameterDirection.Input)
             localDSOutput = localOutPutServer.returnDataSet(paramsStoredProcedure)
             Return localDSOutput
         Catch exceptionObject As Exception
         Finally
         End Try
     End Function



结束类

结束命名空间



End Class

End Namespace


这篇关于数据访问层-SQL 2005-代码错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆