SqlCommand.Parameters.Addで設定する値の型について - VB.NET
Object型でも行けた
ということはDBNull.Value(Object型)を返すメソッドが使えるということ
Dim val1 as Object = "hello" sqlCmd.Parameters.Add("@PARAM1", SqlDbType.Char).Value = val1 sqlCmd.Parameters.Add("@PARAM2", SqlDbType.Int).Value = val2
例えば、テーブル1から取得したデータをテーブル2に入れるときとかに有効的かも
' Dim sqlReader1 as SqlDataReader ' テーブル1の結果が格納 ' Dim sqlCmd2 as SqlCommand ' テーブル2のステートメント sqlCmd2.Parameters.Add("@param1", SqlDbType.Char).Value = GetStringSqlReader(sqlReader1, 0)
''' <summary> ''' Stringを取得する(NULL値の場合、Nothingを返す) ''' </summary> ''' <param name="sqlReader">値を取得するSqlDataReader</param> ''' <param name="idx">結果のインデックス番号</param> ''' <returns>String(NULL値の場合、空文字を返す)</returns> Public Function GetStringSqlReader(ByRef sqlReader As SqlDataReader, ByVal idx As Integer) As Object ' 結果がNULLの場合、DBNull.Value を返し、NULLではない場合、結果を返す If sqlReader.IsDBNull(idx) Then Return DBNull.Value Else Return sqlReader.GetString(idx).Trim() End If End Function