数据未插入SQL Server

时间:2013-05-31 17:05:23

标签: c# sql-server stored-procedures

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但我的数据没有插入,我不知道为什么。

3 个答案:

答案 0 :(得分:2)

你忘了在这里检查身份证件

IF EXISTS (SELECT * FROM Tokens)

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

你可能想要

IF EXISTS (SELECT * FROM Tokens WHERE TokenID = @TokenID)

答案 1 :(得分:1)

你在打电话给这个程序吗?

cmd.ExecuteNonQuery();

答案 2 :(得分:0)

您的代码片段似乎并未实际执行您正在构建的操作。添加:

cmd.ExecuteNonQuery();

实际执行命令。