我遇到了一些奇怪的事情,我觉得是公然成为一个错误,所以我猜我做错了什么:我有下表:
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代码:
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
}
}
这将引发以下消息的异常。
“您的SQL语法有错误;请查看与您的MySQL Server版本相对应的手册,以获得在第1行“s do it”)附近使用的正确语法。”
现在,如果我错了,请纠正我,但这不是存储过程和参数为了帮助抵御注入攻击而要解决的问题类型吗?
还是我在这里做错了什么?