SQL Server Management Studio で次のステートメントを実行すると
exec sp_executesql N'select 1 where 1 = @p1',N'@p1 nvarchar(3)',@p1=N'a'
行く
以下のエラーが表示されます
メッセージ 245、レベル 16、状態 1、行 1
nvarchar 値 'a' をデータ型 int に変換するときに変換に失敗しました。
しかし、ExecuteReader を使用すると、例外は発生しません。
なんで?
このエラーをアプリの例外として取得して処理するにはどうすればよいですか
System.Data.SqlClient をインポートします
モジュール Module1
Sub Main()
Dim TestSqlConnection As SqlConnection = Nothing
Dim TestSqlCommand As SqlCommand = Nothing
Dim TestReader As SqlDataReader = Nothing
Dim TestGetSchemaTable As DataTable = Nothing
TestSqlConnection = New SqlConnection
TestSqlConnection.ConnectionString = "Data Source=(local);Database=master;Integrated Security=true"
TestSqlConnection.Open()
TestSqlCommand = New SqlCommand()
TestSqlCommand.Connection = TestSqlConnection
TestSqlCommand.CommandType = CommandType.Text
TestSqlCommand.CommandText = "select 1 where 1 = @p1"
Dim TestSqlParameter As SqlParameter = New SqlParameter
TestSqlParameter.ParameterName = "@p1"
TestSqlParameter.SqlDbType = SqlDbType.NVarChar
TestSqlParameter.Size = 3
TestSqlParameter.Direction = ParameterDirection.Input
TestSqlParameter.Value = "a"
TestSqlCommand.Parameters.Add(TestSqlParameter)
Try
TestReader = TestSqlCommand.ExecuteReader()
Catch ex As Exception
Console.WriteLine("Exception")
Finally
Console.WriteLine("Finally")
End Try
End Sub
エンドモジュール