2017-03-16 529 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

何を期待していますか? intにリテラルを書くことはできません。 – 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);

関連する問題