C# “如何修复”;指定的强制转换无效";从表中检索数据以确认记录是否存在时出错?
我正在使用我的程序向数据库添加帐户。我将生成一个随机帐号,检查数据库中是否存在该帐号,如果不存在,则使用它创建一个新帐号。但是,我在C# “如何修复”;指定的强制转换无效";从表中检索数据以确认记录是否存在时出错?,c#,mysql,sql,visual-studio,winforms,C#,Mysql,Sql,Visual Studio,Winforms,我正在使用我的程序向数据库添加帐户。我将生成一个随机帐号,检查数据库中是否存在该帐号,如果不存在,则使用它创建一个新帐号。但是,我在Int32行上遇到错误“指定的强制转换无效”?RecordExist=(Int32?)检查_Records.ExecuteScalar() 我试过.Convert.ToInt32,只试过int,double,我试过在施放之前将其作为一个对象进行检查,但我不知道问题出在哪里 string AccountNumber; bool accountExi
Int32行上遇到错误“指定的强制转换无效”?RecordExist=(Int32?)检查_Records.ExecuteScalar()代码>
我试过.Convert.ToInt32
,只试过int
,double
,我试过在施放之前将其作为一个对象进行检查,但我不知道问题出在哪里
string AccountNumber;
bool accountExists = true;
while (accountExists)
{
//GENERATE A RANDOM ACCOUNT NUMBER
Random rnd = new Random();
int acc1 = rnd.Next(0000, 9999);
int acc2 = rnd.Next(0000, 9999);
AccountNumber = "2000-" + acc1 + "-" + acc2 + ";";
using (MySqlConnection conn = new MySqlConnection(Properties.Settings.Default.ConnectionString))
{
conn.Open();
//CHECK WHETHER ACCOUNT NUMBER EXISTS.
string Query = @"SELECT COUNT(*) FROM accounts WHERE Account_Number = '" + AccountNumber + "'";
using (MySqlCommand check_Records = new MySqlCommand(Query, conn))
{
Int32? RecordExist = (Int32?)check_Records.ExecuteScalar();
if (RecordExist.HasValue && RecordExist.Value > 0)
{
//ACCOUNT EXISTS, GENERATE ANOTHER ACCOUNT NUMBER
accountExists = true;
break;
}
else
{
//ACCOUNT DOES NOT EXIST, USE ACCOUNT NUMBER
accountExists = false;
lblNewAccountNumber.Text = AccountNumber;
}
}
conn.Close();
提前谢谢你的帮助,如果我犯了任何错误,我向你道歉
编辑:我要转换的类型不正确,使用即时窗口我可以看到它需要是Int64
。它现在起作用了!谢谢 您应该尝试将ExecuteScalar
值保存到对象
类型变量,然后在调试中找出其类型,然后应用强制转换。正如@Alex K在评论部分提到的那样。
希望它能起作用。如果将ExecuteScalar
值保存到对象变量(没有任何强制转换),会得到什么结果?@AmitKumar它返回0
!如果您将该对象强制转换为int
?它能工作吗?如果你在调试器中为一个对象指定了它的类型(或者查看RecordExist.GetType().Name)嗨@AlexK和@AmitKumar,我已经按照你的建议做了,类型是Int64
,所以我相应地调整了我的代码,现在它能工作了!谢谢你的帮助!我已经按照你的建议做了,类型是Int64,所以我相应地调整了我的代码,现在它可以工作了!谢谢你的帮助!