Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# MySql存储过程参数转义_C#_Mysql_Stored Procedures_Parameters - Fatal编程技术网

C# MySql存储过程参数转义

C# MySql存储过程参数转义,c#,mysql,stored-procedures,parameters,C#,Mysql,Stored Procedures,Parameters,我遇到了一些奇怪的事情,我觉得这是一个明显的错误,所以我猜我做错了什么:我有下表: CREATE TABLE BlurbTest ( ID SERIAL NOT NULL ,Blurb TEXT NOT NULL ); 使用以下存储过程: DELIMITER $$ CREATE PROCEDURE spInsertBlurbTest ( OUT ID INT ,IN BlurbParm TEXT ) BEGIN INSERT

我遇到了一些奇怪的事情,我觉得这是一个明显的错误,所以我猜我做错了什么:我有下表:

CREATE TABLE BlurbTest
(   
     ID      SERIAL NOT NULL
    ,Blurb   TEXT NOT NULL
);
使用以下存储过程:

DELIMITER $$

CREATE PROCEDURE spInsertBlurbTest
(
     OUT ID INT
    ,IN  BlurbParm TEXT
)
BEGIN
    INSERT INTO BlurbTest(
        Blurb
    ) VALUES (
        BlurbParm
    );
    SET ID = LAST_INSERT_ID();
END$$

DELIMITER ;
以及以下C#代码:

正在引发异常,并显示以下消息。 {“您的SQL语法有错误;请检查与您的MySQL服务器版本相对应的手册,以了解第1行附近使用“do it’”的正确语法”}

现在,如果我错了,请纠正我的错误,但这不是存储过程和参数要解决的问题类型,以帮助防止注入攻击吗


或者我在这里做错了什么?

你是对的,但是驱动程序可能没有正确地转义这些字符。这是你的吗


这最终在中继代码中得到了修复。我期待它出现在6.2.1版本中。
using (var conn = new MySqlConnection(Settings.ConnectionString))
{
    conn.Open();
    using (var cmd = conn.CreateCommand())
    {
        cmd.CommandText = "spInsertBlurbTest";
        cmd.CommandType = CommandType.StoredProcedure;
        MySqlCommandBuilder.DeriveParameters(cmd);
        cmd.Parameters["@BlurbParm"].Value = "let's do it";
        cmd.ExecuteNonQuery(); // Throws Exception
    }
}