关于c#:Int.TryParse没有解析指定的强制转换是无效的错误

Int.TryParse not resolving specified cast is not valid error

好的,我最初使用convert.toint32(myradtextbox.text)开始,然后它说指定的强制转换无效。我在这里做了一些研究,决定试试内特帕瑟。这样做之后,我仍然收到这个错误。我要做的是,当用户输入一个ID并点击Create按钮时,它会搜索数据库以查看该ID是否已经存在。我还尝试使用convert.toint32(result)将bool值从int.typarse转换为int(result)(有关将在何处发布的信息,请参见下面第三篇代码文章)。也许这和我的比较方法有关。

下面我为int.typarse方法提供了值。我调用以检查用户输入的方法当前不在数据库中,而我的if语句正在捕获该语句。任何有关如何解决这一问题的意见都将非常感谢。我对大多数这类事情还是陌生的,所以如果留下任何重要信息,我道歉。只要问一下你是否需要澄清或者做些详细的说明。

以下是我的比较方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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.triparse方法中使用的变量:

1
2
3
4
string IDselect = rTxtBoxFormatID.Text.ToString();
        int resultInt;

        bool result = int.TryParse(IDselect, out resultInt);

最后,这里是我捕获错误的方法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
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;
        }


数据库列不支持Int16,即short。这就是为什么我指定的演员表是无效的错误从来没有消失,无论我尝试什么。谢谢你在这件事上的帮助!下面是进一步说明问题所在的代码。

1
2
3
4
5
using (SqlDataReader reader = cmd.ExecuteReader())
        {
            reader.Read();
            //count = reader.GetInt16(0); needs to be reader.GetInt32(0);
        }