如何解决此问题?
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();
答案 0 :(得分:3)
尝试调试此类代码:
object Result = cmd.ExecuteScalar();
我认为这将是decimal
,但它取决于MySQL的行为。在C#中,您只需将double
转换为int
,如果已加框。只需获取正确的类型并转换为它,只有在此之后您才能转换为int
,如下所示:
int Result = (int)(decimal)cmd.ExecuteScalar();
此外,您可以通过object
关键字获取var
,并使用Convert
类:
var objectResult = cmd.ExecuteScalar();
int Result = Convert.ToInt32(objectResult);