環境:
Visual Studio 2008(SP1)
XP(SP3)
SQL Server 2005
行いたいこと:
http://park5.wakwak.com/~weblab/mailMagazine/mag005.htmlのように動かしたい
このURLをまねてADO.netのを学習いております。
このサイトでは、windowsフォームですが、私はASP.netで行っております。
ところが、実際実行させるとパラメータに引数が代入されていないみたいで、
例外がキャッチされてしまいます。
エラーは、「スカラ変数 "@TORIHIKI" を宣言してください。」です
VB.net
Public Function getSyohiZeiRitu() As Single
Const strsql As String = "SELECT * FROM CONSUMPTIONTAX " + _
"WHERE (STARTDATE IS NULL AND @TORIHIKI <= ENDDATE) " + _
"OR (STARTDATE <= @TORIHIKI AND @TORIHIKI <= ENDDATE) " + _
"OR (STARTDATE <= @TORIHIKI AND ENDDATE IS NULL)"
Dim oConn As New SqlConnection()
Dim oCommand As New SqlCommand()
Dim oDataReader As SqlDataReader
Try
oConn.ConnectionString = "SQL Server 接続文字列"
oCommand.Connection = oConn
oCommand.CommandText = strsql
oConn.Open()
oCommand.Parameters.Add(New SqlParameter("@torihikiBi", SqlDbType.DateTime))
'ここまでは日付が取得できている
oCommand.Parameters("@torihikiBi").Value = Me.mTorihikiBi
'ここ行(コード)でCatchに入ってしまう
oDataReader = oCommand.ExecuteReader(CommandBehavior.SingleRow)
If oDataReader.Read() Then
getSyohiZeiRitu = CSng(oDataReader("CONSUMPTIONTAX"))
Else
getSyohiZeiRitu = -1
End If
Catch oExcept As Exception
Throw New Exception(oExcept.ToString)
Finally
If Not oDataReader Is Nothing Then
oDataReader.Close()
End If
If Not oConn Is Nothing Then
oConn.Close()
End If
End Try
Return getSyohiZeiRitu
End Function
SQL文
DECLARE @TORIHIKI DATETIME
SET @TORIHIKI = '1992/04/15'
SELECT * FROM CONSUMPTIONTAX
WHERE (STARTDATE IS NULL AND @TORIHIKI <= ENDDATE)
OR (STARTDATE <= @TORIHIKI AND @TORIHIKI <= ENDDATE)
OR (STARTDATE <= @TORIHIKI AND ENDDATE IS NULL)
@TORIHIKIに日時を入れたいのですが、oCommand.Parameters("@torihikiBi").Value = Me.mTorihikiBiで日付が取得しえいるはずなのに
なぜ取得できないのか苦戦しています。
どのように引数を指定?すれば@TORIHIKIに日付が代入されるのでしょうか。
お願いします。
tomotomody