2017-03-16 62 views
-3

请帮助您使用下面的C#代码。该代码工作发现,当我用的数值,但是当我测试使用像K083271值的代码,我有错误:无法将参数值从字符串转换为Int32。 C#

An exception of type 'System.FormatException' occurred in System.Data.dll but was not handled in user codeAdditional information: Failed to convert parameter value from a String to a Int32.

调试给人usercount = 0

C#代码

using (SqlConnection con = new SqlConnection(WebConfigurationManager.ConnectionStrings["Molecular"].ConnectionString)) 
    { 
     con.Open(); 

using (SqlCommand cmd = new SqlCommand(@"SELECT count(*) 

     from Patient where MBID = @SearchCriteria ", con)) 
     { 
      cmd.Parameters.Add("@SearchCriteria", SqlDbType.Int).Value= Convert.ToString(txtSearchCriteria.Text); 

      DataTable dt = new DataTable(); 
      SqlDataAdapter da = new SqlDataAdapter(cmd); 
      int userCount = (Int32)cmd.ExecuteScalar(); 
      da.Fill(dt); 

      if (userCount > 0) 
      { 

       using (SqlCommand cmd4 = new SqlCommand(@"SELECT * 

         from Patient where MBID = @SearchCriteria ", con)) 
        { 
         int searchcriteria4 = int.Parse(txtSearchCriteria.Text); 
          cmd4.Parameters.AddWithValue("@SearchCriteria", searchcriteria4); 
          DataTable dt4 = new DataTable(); 
          SqlDataAdapter da4 = new SqlDataAdapter(cmd4); 

          da4.Fill(dt4); 

           if (da4 != null) 
           { 
            GridViewClinicalPatientDetails.DataSource = dt4; 
            GridViewClinicalPatientDetails.DataBind(); 
           } 
         } 
          return true; 
         } 
      else 
       { 
          Response.Write("<script>alert('Patient does not exist. Check Patient MBID')</script>"); 

          txtSearchCriteria.Text = ""; 
          return false; 
       } 
     } 
+4

你说的是这行'int searchcriteria4 = int.Parse(txtSearchCriteria.Text);'?你如何期望K083271解析为一个整数? (提示:你不能,首先验证文本框) –

+0

你期望什么?您不能将文字写入整数。 – NotTelling

+1

'“代码工作发现,当我使用数值...” - 由于数字值是数字,但非数字值是非数字。如果要将字符串解析为整数,则该字符串需要表示整数。 – David

回答

1

检查用户在尝试执行查询之前输入:如果用户输入了非整数的内容,请通过诸如“请插入一个数字”等方式警告他并继续。 你可以使用这样的事情:

int idToSearch; 
if (!int.TryParse(txtSearchCriteria.Text, out idToSearch) 
{ 
    // warn somehow the user 
} 
else 
{ 
    //go on with your query, you can safely use idToSearch for you parameter value 
    ... 
    cmd4.Parameters.AddWithValue("@SearchCriteria", idToSearch); 
    ... 
} 
-1

使用贝罗 command.Parameters.Add( “@ SearchCriteria”,0);

相关问题