Bug #24932 | System.AccessViolationException OdbcException (0x80131937) | ||
---|---|---|---|
Submitted: | 9 Dec 2006 10:42 | Modified: | 30 May 2013 6:52 |
Reporter: | Gian Paolo Cipicchia | Email Updates: | |
Status: | Closed | Impact on me: | |
Category: | Connector / ODBC | Severity: | S1 (Critical) |
Version: | 3.51 | OS: | Windows (XP Pro) |
Assigned to: | CPU Architecture: | Any | |
Tags: | ExecuteNonQuery, System.AccessViolationException, System.AccessViolationException |
[9 Dec 2006 10:42]
Gian Paolo Cipicchia
[10 Dec 2006 0:24]
Gian Paolo Cipicchia
Well, I've resolved the problem. Yes. Wrong SQL Syntax. I've discovered something interesting. For example: when i've used the OdbcParameter called dbParam_SessionId and so dbParam_SessionId.DbType = SqlDbType.Int SqlDbType has a strange behaviour when a DateTime ( in MySQL DB ) field is converted to SqlDbType.DateTime. Yes ! It consider is as conversion from DateTime to Decimal !! So I've changed this piece of code: dbParam_CreateDate.DbType = DbType.DateTime So, here it is the code that works fine: Shared Function Updatelocation(ByVal fld_HANDLE As System.Int32, ByVal fld_SessionId As System.Int32, ByVal fld_Location_Id As System.String, ByVal fld_AdrsProv As System.Int32, ByVal fld_AdrsCom As System.Int32, ByVal fld_AdrsCAP As System.Int32, ByVal fld_AdrsPre As System.Int32, ByVal fld_AdrsName As System.String, ByVal fld_AdrsNr As System.String, ByVal fld_AdrsLoc As System.String, ByVal fld_PRG_ZTO As System.Int32, ByVal fld_Zona_Cens As System.String, ByVal fld_CreateDate As System.DateTime, ByVal fld_KS_Code As System.String) As Integer Dim connectionString As String = Helpers.GetInstance.ConnessioneDB Dim dbConnection As IDbConnection = New OdbcConnection(connectionString) Dim queryString As String = "UPDATE location SET SessionId = ?, Location_Id = ?, AdrsProv = ?, AdrsCom = ?, AdrsCAP = ?, AdrsPre = ?, AdrsName = ?, AdrsNr = ?, AdrsLoc = ?, PRG_ZTO = ?, Zona_Cens = ?, CreateDate = ?, KS_Code = ? WHERE HANDLE = ?" Dim dbCommand As IDbCommand = New OdbcCommand dbCommand.CommandText = queryString dbCommand.Connection = dbConnection Dim dbParam_SessionId As IDataParameter = New OdbcParameter dbParam_SessionId.Value = fld_SessionId dbParam_SessionId.DbType = SqlDbType.Int dbCommand.Parameters.Add(dbParam_SessionId) Dim dbParam_Location_Id As IDataParameter = New OdbcParameter dbParam_Location_Id.Value = fld_Location_Id dbParam_Location_Id.DbType = SqlDbType.VarChar dbCommand.Parameters.Add(dbParam_Location_Id) Dim dbParam_AdrsProv As IDataParameter = New OdbcParameter dbParam_AdrsProv.Value = fld_AdrsProv dbParam_AdrsProv.DbType = SqlDbType.Int dbCommand.Parameters.Add(dbParam_AdrsProv) Dim dbParam_AdrsCom As IDataParameter = New OdbcParameter dbParam_AdrsCom.Value = fld_AdrsCom dbParam_AdrsCom.DbType = SqlDbType.Int dbCommand.Parameters.Add(dbParam_AdrsCom) Dim dbParam_AdrsCAP As IDataParameter = New OdbcParameter dbParam_AdrsCAP.Value = fld_AdrsCAP dbParam_AdrsCAP.DbType = SqlDbType.Int dbCommand.Parameters.Add(dbParam_AdrsCAP) Dim dbParam_AdrsPre As IDataParameter = New OdbcParameter dbParam_AdrsPre.Value = fld_AdrsPre dbParam_AdrsPre.DbType = SqlDbType.Int dbCommand.Parameters.Add(dbParam_AdrsPre) Dim dbParam_AdrsName As IDataParameter = New OdbcParameter dbParam_AdrsName.Value = fld_AdrsName dbParam_AdrsName.DbType = SqlDbType.VarChar dbCommand.Parameters.Add(dbParam_AdrsName) Dim dbParam_AdrsNr As IDataParameter = New OdbcParameter dbParam_AdrsNr.Value = fld_AdrsNr dbParam_AdrsNr.DbType = SqlDbType.VarChar dbCommand.Parameters.Add(dbParam_AdrsNr) Dim dbParam_AdrsLoc As IDataParameter = New OdbcParameter dbParam_AdrsLoc.Value = fld_AdrsLoc dbParam_AdrsLoc.DbType = SqlDbType.VarChar dbCommand.Parameters.Add(dbParam_AdrsLoc) Dim dbParam_PRG_ZTO As IDataParameter = New OdbcParameter dbParam_PRG_ZTO.Value = fld_PRG_ZTO dbParam_PRG_ZTO.DbType = SqlDbType.Int dbCommand.Parameters.Add(dbParam_PRG_ZTO) Dim dbParam_Zona_Cens As IDataParameter = New OdbcParameter dbParam_Zona_Cens.Value = fld_Zona_Cens dbParam_Zona_Cens.DbType = SqlDbType.VarChar dbCommand.Parameters.Add(dbParam_Zona_Cens) Dim dbParam_CreateDate As IDataParameter = New OdbcParameter dbParam_CreateDate.Value = fld_CreateDate dbParam_CreateDate.DbType = DbType.DateTime dbCommand.Parameters.Add(dbParam_CreateDate) Dim dbParam_KS_Code As IDataParameter = New OdbcParameter dbParam_KS_Code.Value = fld_KS_Code dbParam_KS_Code.DbType = SqlDbType.VarChar dbCommand.Parameters.Add(dbParam_KS_Code) Dim dbParam_HANDLE As IDataParameter = New OdbcParameter dbParam_HANDLE.Value = fld_HANDLE dbParam_HANDLE.DbType = SqlDbType.Int dbCommand.Parameters.Add(dbParam_HANDLE) Dim rowsAffected As Integer = 0 dbConnection.Open() Try rowsAffected = dbCommand.ExecuteNonQuery Catch e As OdbcException 'MsgBox(e.Message & vbCrLf & e.StackTrace.ToString()) Finally dbConnection.Close() End Try Return rowsAffected End Function Best Regards, Gian Paolo. PS: However, there is a problem, ODBC Connector doesn't trow this specific syntax error.
[11 Dec 2006 8:15]
Tonci Grgin
Hi Gian Paolo and thanks for your problem report. Can you please shorten your example code to just show the problem and post DDL and DML statements needed for the test? As for conversion, from what I see in sources it is not a MyODBC problem as it supports all of conversions defined in http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odbc/htm/odbcconverting_d...
[12 Jan 2007 0:00]
Bugs System
No feedback was provided for this bug for over a month, so it is being suspended automatically. If you are able to provide the information that was originally requested, please do so and change the status of the bug back to "Open".
[30 May 2013 6:52]
Bogdan Degtyariov
I'm closing this bug because I can not continue without feedback from the reporter. If you have new info, please reopen the report.