error while updating string to int32

chi2king

Member
Joined
Sep 28, 2006
Messages
20
Programming Experience
Beginner
Can any body please tell me what does this error mean.

System.FormatException: Failed to convert parameter value from a String to a Int32. ---> System.FormatException: Input string
was not in a correct format. at System.Number.StringToNumber(String str, NumberStyles options, NumberBuffer& number,
NumberFormatInfo info, Boolean parseDecimal) at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info)
at System.String.System.IConvertible.ToInt32(IFormatP rovider provider) at System.Convert.ChangeType(Object value, Type
conversionType, IFormatProvider provider) at System.Data.SqlClient.SqlParameter.CoerceValue(Obj ect value, MetaType
destinationType) --- End of inner exception stack trace --- at System.Data.SqlClient.SqlParameter.CoerceValue(Obj ect value,
MetaType destinationType) at System.Data.SqlClient.SqlParameter.GetCoercedValue () at
System.Data.SqlClient.SqlParameter.Validate(Int32 index) at System.Data.SqlClient.SqlCommand.BuildParamList(Td sParser
parser, SqlParameterCollection parameters) at System.Data.SqlClient.SqlCommand.BuildExecuteSql(C ommandBehavior behavior,
String commandText, SqlParameterCollection parameters, _SqlRPC& rpc) at
System.Data.SqlClient.SqlCommand.RunExecuteReaderT ds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean
returnStream, Boolean async) at System.Data.SqlClient.SqlCommand.RunExecuteReader( CommandBehavior cmdBehavior, RunBehavior
runBehavior, Boolean returnStream, String method, DbAsyncResult result) at
System.Data.SqlClient.SqlCommand.InternalExecuteNo nQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at
ystem.Data.SqlClient.SqlCommand.ExecuteNonQuery() at _Default.Button2_Click(Object sender, EventArgs e) in
H:\website\champ\Default.aspx.vb:line 108 (in RED color)

Here is my code:


VB.NET:
Dim DBConn As New Data.SqlClient.SqlConnection("Data Source=XXX;Initial Catalog=XXX;Integrated Security=True")
Dim DBCmd As New Data.SqlClient.SqlCommand
Dim DBAdap As New Data.SqlClient.SqlDataAdapter
Dim DS As New Data.DataSet
DBConn.Open()
Try
DBCmd = New Data.SqlClient.SqlCommand("UPDATE family SET lastname = @lastname, firstname = @firstname, sex = @sex, age = @age 
WHERE ID = @ID", DBConn)
DBCmd.Parameters.Add("@ID", Data.SqlDbType.Int).Value = CInt(ListBox1.SelectedValue)
DBCmd.Parameters.Add("@lastname", Data.SqlDbType.VarChar).Value = TextBox1.Text
DBCmd.Parameters.Add("@firstname", Data.SqlDbType.VarChar).Value = TextBox2.Text
DBCmd.Parameters.Add("@sex", Data.SqlDbType.VarChar).Value = TextBox3.Text
DBCmd.Parameters.Add("@age", Data.SqlDbType.Int).Value = TextBox4.Text
 
[COLOR=red]DBCmd.ExecuteNonQuery()[/COLOR]
Response.Write("Your record is updated")
DBAdap = New Data.SqlClient.SqlDataAdapter("SELECT * FROM family", DBConn)
DBAdap.Fill(DS)
ListBox1.DataBind()
Catch exp As Exception
Response.Write(exp)
End Try
DBCmd.Dispose()
DBAdap.Dispose()
DBConn.Close()
DBConn = Nothing
End Sub
 
VB.NET:
DBCmd.Parameters.Add("@age", Data.SqlDbType.Int).Value = TextBox4.Text

The above line is your problem. It should be....

VB.NET:
DBCmd.Parameters.Add("@age", Data.SqlDbType.Int).Value = Convert.ToInt32(TextBox4.Text)
 
Or how about just:
VB.NET:
DBCmd.Parameters.AddWithValue("@age", Convert.ToInt32(TextBox4.Text))
Can I also suggest the use of more politically correct term "gender" for Male and Female?
 
i've tried your code and it gave no more errors. Thanks.

but the data in the database is not updated. Is there something that i miss.
 
Back
Top