好吧我最初开始使用Convert.ToInt32(myradTextBox.Text)然后它说,指定的强制转换是无效的。我在这里做了一些研究,并决定尝试Int.TryParse。一旦这样做,我仍然收到这个错误。我想要做的是,当用户输入一个ID并点击创建按钮时,它会搜索数据库以查看该ID是否已经存在。我也尝试使用Convert.ToInt32(Result)仍然相同的错误(请参阅下面的第三个代码文章中将发布的位置)将我的Int.TryParse的布尔值转换为int。也许这与我的比较方法有关。Int.TryParse不解决指定的强制转换是无效的错误
下面我提供了Int.TryParse方法的值。我打电话来检查userinput的方法不在当前的数据库中,而我的if语句正在捕获该语句。任何关于如何解决这个问题的输入将不胜感激。我对这些东西中的大部分还是新的,所以如果将任何关键信息都关闭,我很抱歉。只是问你是否需要澄清或详细说明。
这里是我的比较方法:
public bool isValidID(int id)
{
SqlConnection dbConn = null;
int count = 0;
try
{
using (dbConn = new SqlConnection(Properties.Settings.Default["tville"].ToString()))
{
string sql = "SELECT Count(*) FROM PackLabelFormat where PackFormatID = @PackFormatID";
SqlCommand cmd = dbConn.CreateCommand();
cmd.CommandText = sql;
cmd.Parameters.AddWithValue("@PackFormatID", id);
dbConn.Open();
using (SqlDataReader reader = cmd.ExecuteReader())
{
reader.Read();
count = reader.GetInt16(0);
}
}
}
catch (Exception ex)
{
throw ex;
}
if (count > 0)
return false;
return true;
}
这里是我的变量,我在我的Int.TryParse方法使用:
string IDselect = rTxtBoxFormatID.Text.ToString();
int resultInt;
bool result = int.TryParse(IDselect, out resultInt);
最后这里是我的方法是捕获错误:
SqlConnection dbConn = null;
LabelData labelList = new LabelData();
try
{
using (dbConn = new SqlConnection(Properties.Settings.Default["tville"].ToString()))
{
if (SelectedVersion.isValidID(resultInt))
{
SelectedVersion.PackFormatID = resultInt;
}
else
{
MessageBox.Show("ID already in use!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
}
catch (Exception ex)
{
throw ex;
}
什么行引发错误,什么是错误? 'int.TryParse'返回'false'吗?文本框中的输入是什么? –
你的代码抛出和'InvalidCastException'。查看此异常的堆栈跟踪以了解抛出异常的位置。它可能是'reader.GetInt16(0)'。如果第0列不包含“Int16”又名“short”,则会发生这种情况。 –
@MichaelPerrenoud在我发布的最后一块代码末尾的catch,并且只是说指定的转换是无效的。不,我检查调试值,他们正在得到他们应该输入的值 –