簡體   English   中英

將數據類型varchar轉換為數字時出錯。 我使用了varchar數據類型,並嘗試插入18-24值

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

我有桌子

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)    

我將varchar數據類型指定給age字段,並嘗試插入18-24的值,所以它向我顯示了這樣的錯誤-

“將數據類型varchar轉換為數字時出錯。”

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(); 

我該怎么辦?

您的表列phnonumeric並且您將數據另存為varchar ..也請始終使用參數化查詢來避免SQL注入

嘗試下面的代碼

 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();

薩楚的答案有點修改

 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();

嘗試這個:

 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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM