[英]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();
我該怎么辦?
您的表列phno
是numeric
並且您將數據另存為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.