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

你忘了在这里检查身份证

IF EXISTS (SELECT * FROM Tokens)

如果表中至少有一行,则插入部分永远不会触发,只有更新部分

你可能想要

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 回答