我有一个简单的数据库,它有一个 ID 列作为主键、INT、AUTO_INCREMENT 和一个名称列。
我正在尝试将值插入数据库并取回 ID。这是我的代码的一部分:
using (var connection = new MySqlConnection(...))
{
connection.Open();
var command = connection.CreateCommand();
command.CommandText =
"INSERT INTO `adressbook`.`Person` (`ID`, `Name`)
VALUES (@id, @name);";
var idParameter = new MySqlParameter("id", MySqlDbType.Int32);
idParameter.Direction = ParameterDirection.Output;
idParameter.SourceColumn = "ID";
command.Parameters.Add(idParameter);
command.Parameters.AddWithValue("name", "Test");
command.ExecuteNonQuery();
var id = command.Parameters["id"].Value;
connection.Close();
}
但是,我总是将 NULL 作为值,即使我可以看到该值已插入到数据库中(因此连接设置等都很好)。
我试过的
我已阅读MySQL Connector/NET Output Parameter Returning NULL并Get the value from Output parameter C#,但如果我将代码更改为
var reader = command.ExecuteReader();
reader.Read();
reader.Close();
我已经阅读了相关的帖子Executing MySqlCommand (StoredProcedure) with output parameter,但它对我没有帮助,因为我已经使用了正确的 MySql 数据类型。