【发布时间】:2009-10-22 20:08:06
【问题描述】:
我遇到了一些奇怪的事情,我觉得这是一个明显的错误,所以我猜我做错了什么:我有以下表格:
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 行附近使用 's do it')'"}
现在,如果我错了,请纠正我,但这不正是存储过程和参数旨在解决以帮助抵御注入攻击的问题类型吗?
还是我在这里做错了什么?
【问题讨论】:
标签: c# mysql stored-procedures parameters