الان رفتم دیدم ورژن 3.6.16 هم اومده.
خب
بصورت پیشفرض توابع SQLite یکی از 26 کد خطایی که بالا معرفی کردم تحت عنوان result codes رو برمیگردونه. از قرار معلوم این کدا خیلی کلی بودن و برای خطا یابی دقیق کار سخت میشده. برای همین از ورژن 3.3.8 اومدن و کد های جدیدی اضافه کردن تحت عنوان extended result codes که اطلاعات دقیق تری در مورد خطای رخ داده در اختیارتون میگذاره. بصورت پیشفرض و برای پشتیبانی از ورژن های قبلی این قابلیت غیر فعاله که میتونید برای فعال کردنش از تابع زیر استفاده کنید:
کد:
int sqlite3_extended_result_codes(sqlite3*, int onoff);
کد SQLITE_OK میشه یکیه ( 0 ) و توی این سری کد ها هم فرقی نمیکنه.
در ضمن فعال کردن این قابلیت Database Based هست یعنی میتونین برای دیتابیس مشخصی این قابلیت رو فعال کنین و از اون به بعد صرفا در کار با اون دیتابیس ازش استفاده کنید.
خب این کدا هم یه سری ثابت هستن که زیر گذاشتم. + این که این کدا طی ورژن های جدید افزوده میشن پس اگه یه وقت خودتونو آپ دیت کردین و از extended result codes هم استفاده میکنین حواستون باشه که اگه چیزی اضافه شده اونو هم به برنامه تون اضافه کنید. ( از ورژن قبلی که داشتم تا ورژن الان یکی اضافه شده )
کد:
#define SQLITE_IOERR_READ (SQLITE_IOERR | (1<<8))
#define SQLITE_IOERR_SHORT_READ (SQLITE_IOERR | (2<<8))
#define SQLITE_IOERR_WRITE (SQLITE_IOERR | (3<<8))
#define SQLITE_IOERR_FSYNC (SQLITE_IOERR | (4<<8))
#define SQLITE_IOERR_DIR_FSYNC (SQLITE_IOERR | (5<<8))
#define SQLITE_IOERR_TRUNCATE (SQLITE_IOERR | (6<<8))
#define SQLITE_IOERR_FSTAT (SQLITE_IOERR | (7<<8))
#define SQLITE_IOERR_UNLOCK (SQLITE_IOERR | (8<<8))
#define SQLITE_IOERR_RDLOCK (SQLITE_IOERR | (9<<8))
#define SQLITE_IOERR_DELETE (SQLITE_IOERR | (10<<8))
#define SQLITE_IOERR_BLOCKED (SQLITE_IOERR | (11<<8))
#define SQLITE_IOERR_NOMEM (SQLITE_IOERR | (12<<8))
#define SQLITE_IOERR_ACCESS (SQLITE_IOERR | (13<<8))
#define SQLITE_IOERR_CHECKRESERVEDLOCK (SQLITE_IOERR | (14<<8))
#define SQLITE_IOERR_LOCK (SQLITE_IOERR | (15<<8))
#define SQLITE_IOERR_CLOSE (SQLITE_IOERR | (16<<8))
#define SQLITE_IOERR_DIR_CLOSE (SQLITE_IOERR | (17<<8))
#define SQLITE_LOCKED_SHAREDCACHE (SQLITE_LOCKED | (1<<8))
فعلا.