Specified cast is not valid 错误在 C#

Specified cast is not valid error in C#

我该如何解决?

MySqlConnection con = new MySqlConnection(myconnectionstring);
string validateinventory = "SELECT COUNT(*) FROM inventory_register WHERE barcode = @barcode";

MySqlCommand cmd = new MySqlCommand(validateinventory,con);

con.Open();
cmd.Parameters.AddWithValue("@barcode", textBox3.Text);
int Result = (int)cmd.ExecuteScalar();
con.Close();

if (Result > 0)
{
    textBox3.Text = "";
    MessageBox.Show("Invalid Barcode! Please Register Inventory or Enter Valid Barcode");
}

在以下行中抛出 InvalidCastException:

int Result = (int)cmd.ExecuteScalar();

尝试调试这样的代码:

object Result = cmd.ExecuteScalar();

我认为这将是 decimal,但这取决于 MySQL 行为。在 C# 中,您不能简单地将 double 转换为 int(如果它是装箱的 )。只需获取正确的类型并转换为它,然后才能转换为 int,如下所示:

int Result = (int)(decimal)cmd.ExecuteScalar();

此外,您可以通过var关键字获取object,并使用Convert class:

var objectResult = cmd.ExecuteScalar();
int Result = Convert.ToInt32(objectResult);