0
我遇到一些奇怪的来到,我觉得是明目张胆的是一个错误,所以我猜,我做错了什么:我有如下表:MySQL存储过程的参数逃离
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服务器版本相对应的手册,以便在第1行使用正确的语法”)“}
现在,我错了,但这不完全是存储过程和参数旨在解决的问题类型,以帮助防止注入攻击?
或者我在这里做错了什么?
这将是我:) – feihtthief 2009-10-23 05:04:53
这最终被固定在树干上的代码。我期待它在6.2.1版本中。 – feihtthief 2009-11-12 20:08:27