1

テーブルを検索して、レコードが存在するかどうかを確認したいと思います。後で挿入または更新を実行したくありません。私はすでにこれを行っていますが、どういうわけかこれを機能させることができません。asp.netページで、値が返されないようです。エラーは「入力文字列が正しい形式ではありません」です。それは明らかですが、今は表示されていないようです。

これが私のコードです:

Dim con As New SqlConnection("connstring")
Dim cmd As New SqlCommand("checkname", con)
cmd.CommandType = CommandType.StoredProcedure

cmd.Parameters.Add(New SqlParameter("@d", SqlDbType.Int))
cmd.Parameters("@id").Value = TextBox1.Text

Dim para As New SqlParameter
para.Direction = ParameterDirection.ReturnValue
para.ParameterName = "returnvalue"
cmd.Parameters.Add(para)

con.Open()


cmd.ExecuteNonQuery()
Dim exists As Integer
exists = Convert.ToInt32(cmd.Parameters("returnvalue").Value)
If exists = 1 Then
    Label1.Text = "You......"
         ElseIf exists = 0 Then
    Label1.Text = "You....."

End If
con.Close()

ストアドプロシージャ:

CREATE PROCEDURE checkname 
    -- Add the parameters for the stored procedure here
    @id int
AS
  --This means it exists, return it to ASP and tell us
 -- SELECT 'already exists'

IF EXISTS(SELECT * FROM attendees WHERE id = @id)
BEGIN
RETURN 1
END
ELSE
BEGIN
   RETURN 0
END
4

4 に答える 4

1

整数を渡していることを確認する必要があります。

int intValue;
if(!int.TryParse(TextBox1.Text, out intValue))
{
     // Update your page to indicate an error

     return;

}

cmd.Parameters.Add(New SqlParameter("id", SqlDbType.Int));
cmd.Parameters("id").Value = intValue; 

(技術的には、.NETコードでパラメーターを定義するときに「@」文字は必要ありません。)

于 2011-04-12T03:19:59.283 に答える
0

プロシージャパラメータを@idではなく@dとして宣言しました。また、戻りパラメーターを入力パラメーターにすることはできません。戻り値は終了コードである必要があります。ほとんどの場合、出力パラメーターを作成し、それをストアード・プロシージャー内で1または0に設定する必要があります。

編集:明確にするために、戻り値は一般的に正しい実行の指標と見なされます。ゼロは通常成功を意味し、他の数値は一般にエラーコードと見なされます。そのため、戻り値パラメーターを追加するのではなく、出力パラメーターを追加することをお勧めしました。

于 2011-04-12T03:19:06.117 に答える
0

ExecuteNonQuery影響を受けた行数を返します。ExecuteNonQueryしたがって、ストアド プロシージャで設定した戻り値は破棄され、メソッドによって返されません。

于 2011-09-23T09:25:21.073 に答える
-2

ExecuteNonQuery は、挿入/削除/更新操作に使用されます。SELECT ではなく、ExecuteScalar または ExecuteReader メソッドが必要です。このリンクは、出力パラメーターの使用方法を知るのに役立ちます: http://aspdotnet-suresh.blogspot.com/2010/10/introduction-here-i-will-explain-how-to.html

于 2011-04-12T03:25:40.697 に答える