0
CreateConnectionString();
SqlCommand cmd = sqlConnection.CreateCommand();
cmd.CommandType = System.Data.CommandType.StoredProcedure;
cmd.CommandText = "[MURL_InsertTokens]";

SqlParameter ParameterTokenID = new SqlParameter();
ParameterTokenID.ParameterName = "@TokenID";
ParameterTokenID.SqlDbType = System.Data.SqlDbType.Int;
ParameterTokenID.Direction = ParameterDirection.Input;
ParameterTokenID.Value = token;
cmd.Parameters.Add(ParameterTokenID);

SqlParameter ParameterToken = new SqlParameter();
ParameterToken.ParameterName = "@Token";
ParameterToken.SqlDbType = System.Data.SqlDbType.NVarChar;
ParameterToken.Direction = ParameterDirection.Input;
ParameterToken.Value = token;
cmd.Parameters.Add(ParameterToken);

return true;

ストアド プロシージャ:

ALTER PROCEDURE [dbo].[MURL_InsertTokens] 
   @TokenID int ,
   @Token nvarchar(MAX)
AS
BEGIN
    -- SET NOCOUNT ON added to prevent extra result sets from
    -- interfering with SELECT statements.
    SET NOCOUNT ON;

    IF EXISTS (SELECT * FROM Tokens)
        BEGIN
            UPDATE Tokens SET Tokens = @Token WHERE TokenID = @TokenID
        END
    ELSE
        BEGIN
            INSERT INTO Tokens(Tokens) VALUES (@Token)
        END
END

true が返されますが、データが挿入されず、理由がわかりません。

4

3 に答える 3

2

ここでIDを確認するのを忘れました

IF EXISTS (SELECT * FROM Tokens)

テーブルに少なくとも 1 つの行がある場合、挿入部分は起動せず、更新部分のみが起動します

あなたはおそらくしたいです

IF EXISTS (SELECT * FROM Tokens WHERE TokenID = @TokenID)
于 2013-05-31T17:07:15.323 に答える
1

手順を呼び出していますか?

cmd.ExecuteNonQuery();
于 2013-05-31T17:09:26.620 に答える
0

コードのスニペットは、作成しているアクションを実際に実行しているようには見えません。追加:

cmd.ExecuteNonQuery();

実際にコマンドを実行します。

于 2013-05-31T17:10:10.387 に答える