0

さまざまなパラメーターで開始するための多くの「New()」関数を持つクラスがあります。引数なしでクラスを初期化する New() 関数を作成したいと思います。問題は、クラスのデータを入力し、ストアド プロシージャを使用して作業を行う "fillData" 関数があることですが、ストアド プロシージャ パラメータがあります。新しい fillData 関数を作成したくはありませんが、ストアド プロシージャを追加することなく、fillData 関数を使用したいと考えています。これを行う私の方法は、空の SqlParameter var を fillData 関数に渡すことでしたが、params パラメータが空であることを確認すると、常にそこに何かがあると思われるようです。

この「params」パラメーターが空かどうかを確認したいと思います。

Public Sub New()
    'just created this so i could pass something
    'and continue using fillData as is.
    Dim p(1) As SqlParameter 

    Dim db As sqldb.command
    db = New sqldb.command(ConfigurationManager.ConnectionStrings("sqlConnectionString").ConnectionString)
    fillData("r2m_getAllListingsSorted", p)
End Sub

...

Private Sub fillData(ByVal sp As String, ByVal params As SqlParameter())
    Dim db As sqldb.command
    Dim r As SqlDataReader
    db = New sqldb.command(ConfigurationManager.ConnectionStrings("sqlConnectionString").ConnectionString)

    'right here, im having the trouble, seems no matter how I try to "params", 
    'the code always defaults to db.executeReader(sp, p)
    'I've tried params.Length = 0 and params.ToString = "" also.
    If params.Value Then
        r = db.executeReader(sp)
    Else
        r = db.executeReader(sp, params)
    End If

これを変更して、SqlParameter パラメータを渡さずに fillData 関数を引き続き使用できるようにするにはどうすればよいですか?

ありがとうございました!

4

1 に答える 1

0

SqlParameter をオプションにして、デフォルト値をNothing次のように指定できます。

Private Sub fillData(ByVal sp As String, 
                            ByVal Optional params As SqlParameter() = Nothing)

次に、params 引数なしでメソッドを呼び出します。

fillData("StoredProcName")

fillData次に、メソッド内のパラメーターをチェックして、Nothing使用前かどうかを確認できます。

If params is Nothing Then
  // Do something if there's no params
Else
 // Do something if there is params
End If
于 2012-05-23T16:55:25.310 に答える