好吧我最初開始使用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,並且只是說指定的轉換是無效的。不,我檢查調試值,他們正在得到他們應該輸入的值 –