Index: SQLiteException.cs =================================================================== --- SQLiteException.cs (.../vendor/SQLite.NET/current/System.Data.SQLite/SQLiteException.cs) (revision 39464) +++ SQLiteException.cs (.../trunk/third-party/SQLite.NET/System.Data.SQLite/SQLiteException.cs) (revision 39464) @@ -97,10 +97,17 @@ if (errorMessage.Length > 0) errorMessage = "\r\n" + errorMessage; - if (errorCode < 0 || errorCode >= _errorMessages.Length) + if (errorCode < 0 || (errorCode % 256) >= _errorMessages.Length) errorCode = 1; - return _errorMessages[errorCode] + errorMessage; + if (errorCode % 256 == 10) // I/O error + { + int extendedErrorCode = errorCode / 256; + if (extendedErrorCode >= 1 && extendedErrorCode < _ioErrorMessages.Length) + errorMessage = "\r\n" + _ioErrorMessages[extendedErrorCode] + errorMessage; + } + + return _errorMessages[errorCode % 256] + errorMessage; } private static string[] _errorMessages = { @@ -132,6 +139,27 @@ "2nd parameter to sqlite3_bind() out of range", "File opened that is not a database file", }; + + private static string[] _ioErrorMessages = { + "", + "Error in Read", + "Not enough bytes read", + "Error in Write", + "Error in FSync", + "Error in Dir FSync", + "Error in Truncate", + "Error in FStat", + "Error in Unlock", + "Error in RdLock", + "Error in Delete", + "I/O blocked", + "Out of memory", + "Access denied", + "Error in Check Reserved Lock", + "Error in Lock", + "Error in Close", + "Error in Dir Close", + }; } ///