1

私はクラスが初めてで、クラスを作成したいのですが、SqlCommandManagerクラスを渡す方法がわかりませんSqlParameter

たとえば、データを挿入したい場合は、以下のクライアントのようなクラスを使用します。

'Client

Dim m_SqlComManager as new SQLCommandManager("MyConnectionString")
m_SqlCommandManager.Commandtext = "INSERT INTO [TableName]([Field1],[Field2])VALUES(@Field1,Field2);"
m_SqlCommandManager.Parameters.AddWithValue("@Field1","SomeValue1")
m_SqlCommandManager.Parameters.AddWithValue("@Field2","SomeValue2")
m_SqlCommandManager.ExecuteNonQuery()


'Here is my class

Imports System.Data.SqlClient
Public Class SQLCommandManager
Private m_SqlParameters As SqlParameter()
Private m_Commandtext As String
Private m_ConStr As String

Public WriteOnly Property SQlParameter() As SqlParameter()
    Set(ByVal value As SqlParameter())
        value = m_SqlParameters
    End Set
End Property

Public Property CommandText() As String
    Get
        Return m_Commandtext
    End Get
    Set(ByVal value As String)
        value = m_Commandtext
    End Set
End Property

Public Sub New(ByVal con As String)
    m_ConStr = con
End Sub

Public Sub ExecuteNonQuery()
    Using con As New SqlConnection(m_ConStr)
        Using com As New SqlCommand
            com.Connection = con
            com.CommandText = m_Commandtext
            'Please help
            'How can i insert parameter here from client..

            If con.State = ConnectionState.Closed Then
                con.Open()
            End If
            com.ExecuteNonQuery()
        End Using
    End Using
End Sub
End Class

ExecuteNonQueryメソッドの前にパラメータを設定するにはどうすればよいですか?

前もって感謝します..

4

1 に答える 1

1

私はこのようなことをします:

Public Class SqlCommandManager
    Private m_SqlParameters As List(Of SqlParameter)
    Private m_Commandtext As String
    Private m_ConStr As String

    Public Sub New()
        m_SqlParameters = New List(Of SqlParameter)()
    End Sub

    Public ReadOnly Property SqlParameters() As List(Of SqlParameter)
        Get
            Return m_SqlParameters
        End Get
    End Property

    Public Property CommandText() As String
        Get
            Return m_Commandtext
        End Get
        Set
            value = m_Commandtext
        End Set
    End Property

    Public Sub New(con As String)
        m_ConStr = con
    End Sub

    Public Sub ExecuteNonQuery()
        Using con As New SqlConnection(m_ConStr)
            Using com As New SqlCommand(m_Commandtext, con)
                com.Parameters.AddRange(m_SqlParameters.ToArray())

                con.Open()
                com.ExecuteNonQuery()
                con.Close()
            End Using
        End Using
    End Sub
End Class

私が変更したこと:

  • Microsoft の推奨事項に合わせてクラス名を変更しましSqlCommandManagerた (省略形で大文字を 2 文字以上使用しないでください。大文字にする必要はありません) 。IOSqlXml

  • 私はList(Of SqlParameter)配列ではなくを使用します-扱いがはるかに簡単で、追加のパラメーターを追加するのがはるかに簡単です

  • CommandText私は theとSqlConnectionright を the のコンストラクターに渡すことを好みSqlCommandます - そうすれば、これら 2 つの重要な情報を決して忘れることはありません!

  • の直前に.ExecuteQuery、リストで定義されたパラメータを のパラメータ配列に追加しますSqlCommand.AddRange()

于 2013-05-27T04:52:12.117 に答える