执行mySQL INSERT命令时遇到致命错误

4
我正在尝试在C#中执行一个mySQL数据库的INSERT语句:
MySqlConnection connection = new MySqlConnection("SERVER=" + _dbConnection + ";" +
   "DATABASE=" + _dbName + ";" +
   "PORT=" + _dbPort + ";" +
   "UID=" + _dbUsername + ";" +
   "PASSWORD=" + _dbPassword + ";");
MySqlDataAdapter adapter;
DataSet dataset = new DataSet();
command = new MySqlCommand();
command.Connection = connection;
command.CommandText = "INSERT INTO plugins (pluginName, enabled) VALUES (@plugin,@enabled)";
command.Parameters.AddWithValue("@name", "pluginName");
command.Parameters.AddWithValue("@enabled", false);
adapter = new MySqlDataAdapter(command);
adapter.Fill(dataset);

插件表包含两列:pluginName(varchar(50))和enabled(boolean)。
出现以下错误:mysql在执行命令时遇到致命错误。您有任何关于为什么会失败的想法吗?
4个回答

8

您在查询中使用了@plugin,但在参数中使用了@name。如果这是唯一的问题,那么我希望能看到更好的错误信息!


3
如果您探索异常的InnerException(一直到所有异常...),最终会找到问题的根源;在我的情况下,是一个未定义的参数(拼写错误)。 - fableal
我之前也遇到了同样的问题,错误信息一点都不清楚。但是感谢你帮我解决了它! - AdamMc331

0

缺少参数也可能是一个原因。 例如:

cmd.CommandText = "INSERT INTO login VALUES(@uname,@pwd);"
cmd.Parameters.AddWithValue("@uname",TxtUsername.Text.ToString())
'forgot to place "@pwd"

cmd.ExecuteNonQuery()

您遇到了致命错误,可以通过添加

来解决。

cmd.Parameters.AddWithValue("@pwd",TxtPassword.Text.ToString())


0

错误信息“在执行命令时遇到致命错误”通常是由于CommandText行中的语法错误引起的。

例如,以下代码曾经让我困扰了一段时间:

...@date,@email@first,@last...

小心那些逗号!在@email后面应该有一个:

...@date,@email,@first,@last...

0
`(from user in _context.GetDataTable("call sp_get_user_subscribe_info(@param1, @param2)", _context.AddParameter(new dynamic[] { id }))`
我的存储过程有两个参数,但我只传递了一个参数,所以导致了这个错误消息,但是这个错误消息非常令人困惑。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接