偶尔的";输入字符串的格式不正确“;错误

本文关键字:不正确 错误 格式 输入 quot 偶尔 字符串 | 更新日期: 2023-09-27 18:21:03

这是我项目中的代码,我运行过一次,它成功了,但下次尝试时,它没有成功,并返回错误"输入字符串格式不正确"。需要您的紧急帮助。

con = new SqlConnection();
con.ConnectionString = ConClass.conString();
string newstud = "SELECT MAX(StudentRegNo) FROM NewStudent";
if (search(newstud) != "")
  RegNo = (int.Parse(search(newstud)) + 1);
else
  RegNo = 1;
lblStuReg.Text = "AP/HQ/" + RegNo.ToString();

偶尔的";输入字符串的格式不正确“;错误

此特定消息来自int.Parse调用,因为search(newStudQuery)的结果没有返回数值。要防止这种情况发生,请捕获异常或使用TryParse代替

if (!string.IsNullOrEmpty(queryResult)) {
  if (int.TryParse(search(newStudQuery), out RegNo) {
    RegNo += 1; }
  } else { 
    // Handle the case where the result is not a number
  }
} else {
  RegNo = 1;
}

此错误很可能意味着search(newstud)确实返回了一个不为空但也无法解析为整数的字符串。

我假设search正在执行SQL查询。您应该将结果存储在一个变量中,否则它会调用它两次,并使用int.TryParse来解析结果(这也会使代码更短):

string newStudQuery = "SELECT MAX(StudentRegNo) FROM NewStudent";
string queryResult = search(newStudQuery);
if (!int.TryParse(queryResult, out RegNo))
{
    RegNo = 0;
}
RegNo++;    

也许您可以简单地查询

string newstud = "SELECT ISNULL(MAX(StudentRegNo) + 1, 1) FROM NewStudent";

这些问题听起来像是你在应用程序中创建了一个id序列——这应该通过在数据库中自动递增StudentRegNo来处理。


只是为了锻炼——你可以把事情缩短到

int RegNo; // assuming you also just declared it somewhere above
int.TryParse(search(newStudQuery), out RegNo);
RegNo++;

但正如Luke所指出的,search()也应该被重构,以返回更有用的东西,而不是一个可能为空甚至为空引用的字符串。

此处:

RegNo = (int.Parse(search(newstud)) + 1);

search(newstud)没有返回数字。

编辑:使用:

con = new SqlConnection();
con.ConnectionString = ConClass.conString();
string newstud = "SELECT MAX(StudentRegNo) FROM NewStudent";
try{
  RegNo = (int.Parse(search(newstud)) + 1);
}
catch{
  RegNo = 1;
}
lblStuReg.Text = "AP/HQ/" + RegNo.ToString();

编辑:事实上,你可能应该接受贾里德的回答。