2017-01-02 2 views
0

Ma colonne de base de données est de type bigint et possède des valeurs qui sont des numéros de téléphone. Il montre une erreur sur l'événement de clic sur le bouton. L'erreur est dans la ligne:Exception: La valeur était trop grande ou trop petite pour un Int32 dans asp.net?

_bal.phone = Convert.ToInt32(txtphone.Text); 

Pourquoi cela se produit-il?

protected void btnsave_Click(object sender, EventArgs e) 
{ 

    _bal.name = txtname.Text; 
    _bal.age = Convert.ToInt32(txtage.Text); 
    _bal.email = txtemail.Text; 
    _bal.password = txtpassword.Text; 
    _bal.phone = Convert.ToInt32(txtphone.Text); 




    if (btnsave.Text == "SAVE") 
    { 
     _bal.emp_insert(); 
    } 
    else if (btnsave.Text == "UPDATE") 
    { 
     _bal.Lid = int.Parse(ViewState["Loginid"].ToString()); 
     _bal.emp_update(); 
    } 

    fill_grd(); 
} 

protected void grd_RowCommand(object sender, GridViewCommandEventArgs e) 
{ 
    _bal.Lid = int.Parse(e.CommandArgument.ToString()); 
    if (e.CommandName == "editing") 
    { 
     DataSet ds = new DataSet(); 
     ds = _bal.emp_edit(); 
     if (ds.Tables[0].Rows.Count > 0) 
     { 
      txtname.Text = ds.Tables[0].Rows[0]["name"].ToString(); 
      txtage.Text = ds.Tables[0].Rows[0]["age"].ToString(); 
      txtemail.Text = ds.Tables[0].Rows[0]["email"].ToString(); 
      txtpassword.Text = ds.Tables[0].Rows[0]["password"].ToString(); 
      txtphone.Text=ds.Tables[0].Rows[0]["phone"].ToString(); 
     } 
     btnsave.Text = "UPDATE"; 
     ViewState["Loginid"] = e.CommandArgument.ToString(); 
    } 

    else if (e.CommandName == "deleting") 
    { 
     _bal.emp_delete(); 
     fill_grd(); 
    } 
} 
+0

> Le type int représente des entiers 32 bits signés avec des valeurs comprises entre -2147483648 et 2147483647. – Null

+0

impossible de résoudre error.plz help –

+0

Si le numéro de téléphone entré a dépassé la valeur maximale, il doit lever une exception. – Null

Répondre

0

Int32 peut accepter des valeurs entre -2147483648 et 2147483647. Le numéro de téléphone vous saisissez pourrait traverserons cette gamme et c'est la raison pour laquelle vous obtenez cette erreur.

Suggestion: Comme vous l'avez mentionné que vous utilisez nchar dans votre base de données, veuillez utiliser le type de données string pour représenter le champ du numéro de téléphone. OU si vous utilisez un nombre entier, utilisez le type de données Int64. :)

+0

'nchar' peut contenir des données" texte ", il a juste besoin de maximiser sa longueur. Plus; Il n'y a pas de type de données 'string' ni' integer' dans D.B. – Null

+0

Ouais! C'est vrai. Je suggérais d'utiliser string ou integer (long) dans C# où la conversion a été appliquée "Convert.ToInt32 (txtphone.Text);". Merci – zacs

+0

s'il fait cela, une exception sera levée au cas où il a entré plus de 10 chiffres. – Null