简体   繁体   中英

Error converting data type varchar to numeric. I used varchar data type and trying to insert 18-24 value

I have table

name    |datatype    
uid     |int           
name    |varchar(50)    
email   |varchar(32)    
pass    |varchar(32)    
about   |varchar(100)   
age     |varchar(20)    
gender  |varchar(50)    
address |varchar(100)   
phno    |numeric(18, 0)  
style   |varchar(30)    

I give varchar data type to age field and trying to insert 18-24 value, so it's showing me error like this --

"Error converting data type varchar to numeric."

cnn.Open(); 
cmd = new SqlCommand("update tblregister set name='"+txtname .Text +"', pass='"+txtpass .Text +"',about='"+txtabout .Text +"', age='"+drpage.SelectedItem.Text +"', gender='"+rd .SelectedValue +"', address='"+txtadd .Text +"', phno='"+txtphno.Text +"' where email='"+Session ["user"]+"' ", cnn); 
cmd.ExecuteNonQuery(); 
cnn.Close(); 

what should I do?

Your table column phno is numeric and you are saving data as varchar .. Also always use parameterised query to avoid SQL Injection

try below code

 cnn.Open(); 
    cmd = new SqlCommand(@"update tblregister set name=@name,pass=@pass,about=@about,
age=@age,gender=@gender,address=@address,phno=@phonenum where email = @email",cnn);

    cmd.Parameters.AddWithValue("@name", txtname .Text);
    cmd.Parameters.AddWithValue("@pass", txtpass .Text);
    cmd.Parameters.AddWithValue("@about", txtabout .Text);
    cmd.Parameters.AddWithValue("@age", drpage.SelectedItem.Text);
    cmd.Parameters.AddWithValue("@gender", rd .SelectedValue);
    cmd.Parameters.AddWithValue("@address", txtadd .Text );
    cmd.Parameters.AddWithValue("@phonenum",Convert.ToInt64(txtphno.Text));
    cmd.Parameters.AddWithValue("@email", Session ["user"].ToString());
    cmd.ExecuteNonQuery(); 
    cnn.Close();

Little bit modification on Sachu's Answer

 cnn.Open();
    cmd = new SqlCommand(@"update tblregister set name=@name,pass=@pass,about=@about,
    age=@age,gender=@gender,address=@address,phno=@phonenum where email = @email",cnn);

cmd.Parameters.AddWithValue("@name", txtname .Text);
cmd.Parameters.AddWithValue("@pass", txtpass .Text);
cmd.Parameters.AddWithValue("@about", txtabout .Text);
cmd.Parameters.AddWithValue("@age", drpage.SelectedItem.Text);
cmd.Parameters.AddWithValue("@gender", rd .SelectedValue);
cmd.Parameters.AddWithValue("@address", txtadd .Text );
cmd.Parameters.AddWithValue("@phonenum",Convert.ToInt64(txtphno.Text.Trim()));
cmd.Parameters.AddWithValue("@email", Session ["user"].ToString());
cmd.ExecuteNonQuery(); 
cnn.Close();

Try This:

 cnn.Open();
    cmd = new SqlCommand(@"update tblregister set name=@name,pass=@pass,about=@about,
    age=@age,gender=@gender,address=@address,phno=@phno where email = @email",cnn);

cmd.Parameters.AddWithValue("@name", txtname .Text);
cmd.Parameters.AddWithValue("@pass", txtpass .Text);
cmd.Parameters.AddWithValue("@about", txtabout .Text);
cmd.Parameters.AddWithValue("@age", drpage.SelectedItem.Text);
cmd.Parameters.AddWithValue("@gender", rd .SelectedValue);
cmd.Parameters.AddWithValue("@address", txtadd .Text );
cmd.Parameters.AddWithValue("@phno",Convert.ToInt64(txtphno.Text.Trim()));
cmd.Parameters.AddWithValue("@email", Session ["user"].ToString());
cmd.ExecuteNonQuery(); 
cnn.Close();

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM