SQL: Data type mismatch in criteria expression
I det originale asp syntes jeg det var utrolig let at fastlægge, hvor en sådan fejl opstod. Dette føler jeg er blevet mere kompleks i .net.Et eksempel er nedenstående, som jeg er kørt fast i. Jeg føler jeg har tjekket værdierne som overføres efter en 5-6 gange og kan ikke se nogen direkte fejl.
Er der en der kan se, hvad fejlen skyldes og meget gerne komme med lidt vejledning til, hvordan man lettest debugger SQL inserts fejl i asp.net, for jeg føler godt nok det er noget mere tidskrævende end i trad. asp.
Line 65: dbConnection.Open
Line 66: Try
Line 67: rowsAffected = dbCommand.ExecuteNonQuery
Line 68: Finally
Line 69: dbConnection.Close
Stack Trace:
[OleDbException (0x80040e07): Data type mismatch in criteria expression.]
System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(Int32 hr) +41
System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams, Object& executeResult) +174
System.Data.OleDb.OleDbCommand.ExecuteCommandText(Object& executeResult) +92
System.Data.OleDb.OleDbCommand.ExecuteCommand(CommandBehavior behavior, Object& executeResult) +65
System.Data.OleDb.OleDbCommand.ExecuteReaderInternal(CommandBehavior behavior, String method) +112
System.Data.OleDb.OleDbCommand.ExecuteNonQuery() +66
ASP.customer_create_aspx.insertCustomer(String name, Int32 employeeId, DateTime created, Int32 customerTypeId) in E:\hjemmesider\eu\customer\customer_create.aspx:67
ASP.customer_create_aspx.btnCreate_Click(Object sender, EventArgs e) in E:\hjemmesider\eu\customer\customer_create.aspx:30
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1277
Function insertCustomer(ByVal name As String, ByVal employeeId As Integer, ByVal created As Date, ByVal customerTypeId As Integer) As Integer
Dim dbConnection As System.Data.IDbConnection = New System.Data.OleDb.OleDbConnection(ConfigurationSettings.AppSettings("connectionstring"))
Dim queryString As String = "INSERT INTO [Customer] ([Name], [EmployeeId], [Created], [CustomerTypeId]) VALUES (@Name, @EmployeeId, @Created, @CustomerTypeId)"
Dim dbCommand As System.Data.IDbCommand = New System.Data.OleDb.OleDbCommand
dbCommand.CommandText = queryString
dbCommand.Connection = dbConnection
Dim dbParam_name As System.Data.IDataParameter = New System.Data.OleDb.OleDbParameter
dbParam_name.ParameterName = "@Name"
dbParam_name.Value = name
dbParam_name.DbType = System.Data.DbType.String
dbCommand.Parameters.Add(dbParam_name)
Dim dbParam_employeeId As System.Data.IDataParameter = New System.Data.OleDb.OleDbParameter
dbParam_employeeId.ParameterName = "@EmployeeId"
dbParam_employeeId.Value = employeeId
dbParam_employeeId.DbType = System.Data.DbType.Int32
dbCommand.Parameters.Add(dbParam_employeeId)
Dim dbParam_created As System.Data.IDataParameter = New System.Data.OleDb.OleDbParameter
dbParam_created.ParameterName = "@Created"
dbParam_created.Value = created
dbParam_created.DbType = System.Data.DbType.DateTime
dbCommand.Parameters.Add(dbParam_created)
Dim dbParam_customerTypeId As System.Data.IDataParameter = New System.Data.OleDb.OleDbParameter
dbParam_customerTypeId.ParameterName = "@CustomerTypeId"
dbParam_customerTypeId.Value = customerTypeId
dbParam_customerTypeId.DbType = System.Data.DbType.Int32
dbCommand.Parameters.Add(dbParam_customerTypeId)
Dim rowsAffected As Integer = 0
dbConnection.Open
Try
rowsAffected = dbCommand.ExecuteNonQuery
Finally
dbConnection.Close
End Try
Return rowsAffected
End Function
