偶尔的";输入字符串的格式不正确“;错误
本文关键字:不正确 错误 格式 输入 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();
编辑:事实上,你可能应该接受贾里德的回答。