参数未从程序传递到存储过程

时间:2017-03-21 07:07:22

标签: c# mysql stored-procedures parameter-passing

我正在传递参数,如C#page,

conn.Open();
MySqlCommand cmd = new MySqlCommand(sql, conn);  
cmd.CommandText = commandtype.storedprocedure;   
cmd.Parameters.AddWithValue("?user", user)
cmd.Parameters.AddWithValue("?name", name);

关于mysql存储过程使用2参数进行记录存在查找

@id integer,
@name varchar(200)

BEGIN
    IF EXISTS (SELECT * FROM usertable WHERE  id = @id and mode =0 limit 1 )
    THEN
        UPDATE usertable  SET name = name where id=@id and mode = 0;
    ELSE
    INSERT INTO usertable  (name,  mode)VALUES (@name`enter code here`,0);
    END IF;
END

2 个答案:

答案 0 :(得分:0)

另一种将变量发送到我已经使用过的存储过程中的方法没有问题:

cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add("@name", SqlDbTpye.Varchar).Value = name;

我认为您可以按大小和类型指定变量:

SqlDbTpye.Varchar,200

但现在无法测试。

答案 1 :(得分:0)

您需要确保参数的前缀匹配。如果在存储过程中使用“@”,则需要在C#中使用“@”,而不是“?”。

const char* const