⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sqlite3.h

📁 sqlite - DLL TO LIB source
💻 H
📖 第 1 页 / 共 5 页
字号:
** pointer to a memory buffer to use for lookaside memory.  The first** argument may be NULL in which case SQLite will allocate the lookaside** buffer itself using [sqlite3_malloc()].  The second argument is the** size of each lookaside buffer slot and the third argument is the number of** slots.  The size of the buffer in the first argument must be greater than** or equal to the product of the second and third arguments.</dd>**** </dl>*/#define SQLITE_DBCONFIG_LOOKASIDE    1001  /* void* int int *//*** CAPI3REF: Enable Or Disable Extended Result Codes {H12200} <S10700>**** The sqlite3_extended_result_codes() routine enables or disables the** [extended result codes] feature of SQLite. The extended result** codes are disabled by default for historical compatibility considerations.**** Requirements:** [H12201] [H12202]*/int sqlite3_extended_result_codes(sqlite3*, int onoff);/*** CAPI3REF: Last Insert Rowid {H12220} <S10700>**** Each entry in an SQLite table has a unique 64-bit signed** integer key called the [ROWID | "rowid"]. The rowid is always available** as an undeclared column named ROWID, OID, or _ROWID_ as long as those** names are not also used by explicitly declared columns. If** the table has a column of type [INTEGER PRIMARY KEY] then that column** is another alias for the rowid.**** This routine returns the [rowid] of the most recent** successful [INSERT] into the database from the [database connection]** in the first argument.  If no successful [INSERT]s** have ever occurred on that database connection, zero is returned.**** If an [INSERT] occurs within a trigger, then the [rowid] of the inserted** row is returned by this routine as long as the trigger is running.** But once the trigger terminates, the value returned by this routine** reverts to the last value inserted before the trigger fired.**** An [INSERT] that fails due to a constraint violation is not a** successful [INSERT] and does not change the value returned by this** routine.  Thus INSERT OR FAIL, INSERT OR IGNORE, INSERT OR ROLLBACK,** and INSERT OR ABORT make no changes to the return value of this** routine when their insertion fails.  When INSERT OR REPLACE** encounters a constraint violation, it does not fail.  The** INSERT continues to completion after deleting rows that caused** the constraint problem so INSERT OR REPLACE will always change** the return value of this interface.**** For the purposes of this routine, an [INSERT] is considered to** be successful even if it is subsequently rolled back.**** Requirements:** [H12221] [H12223]**** If a separate thread performs a new [INSERT] on the same** database connection while the [sqlite3_last_insert_rowid()]** function is running and thus changes the last insert [rowid],** then the value returned by [sqlite3_last_insert_rowid()] is** unpredictable and might not equal either the old or the new** last insert [rowid].*/sqlite3_int64 sqlite3_last_insert_rowid(sqlite3*);/*** CAPI3REF: Count The Number Of Rows Modified {H12240} <S10600>**** This function returns the number of database rows that were changed** or inserted or deleted by the most recently completed SQL statement** on the [database connection] specified by the first parameter.** Only changes that are directly specified by the [INSERT], [UPDATE],** or [DELETE] statement are counted.  Auxiliary changes caused by** triggers are not counted. Use the [sqlite3_total_changes()] function** to find the total number of changes including changes caused by triggers.**** A "row change" is a change to a single row of a single table** caused by an INSERT, DELETE, or UPDATE statement.  Rows that** are changed as side effects of REPLACE constraint resolution,** rollback, ABORT processing, DROP TABLE, or by any other** mechanisms do not count as direct row changes.**** A "trigger context" is a scope of execution that begins and** ends with the script of a trigger.  Most SQL statements are** evaluated outside of any trigger.  This is the "top level"** trigger context.  If a trigger fires from the top level, a** new trigger context is entered for the duration of that one** trigger.  Subtriggers create subcontexts for their duration.**** Calling [sqlite3_exec()] or [sqlite3_step()] recursively does** not create a new trigger context.**** This function returns the number of direct row changes in the** most recent INSERT, UPDATE, or DELETE statement within the same** trigger context.**** Thus, when called from the top level, this function returns the** number of changes in the most recent INSERT, UPDATE, or DELETE** that also occurred at the top level.  Within the body of a trigger,** the sqlite3_changes() interface can be called to find the number of** changes in the most recently completed INSERT, UPDATE, or DELETE** statement within the body of the same trigger.** However, the number returned does not include changes** caused by subtriggers since those have their own context.**** SQLite implements the command "DELETE FROM table" without a WHERE clause** by dropping and recreating the table.  Doing so is much faster than going** through and deleting individual elements from the table.  Because of this** optimization, the deletions in "DELETE FROM table" are not row changes and** will not be counted by the sqlite3_changes() or [sqlite3_total_changes()]** functions, regardless of the number of elements that were originally** in the table.  To get an accurate count of the number of rows deleted, use** "DELETE FROM table WHERE 1" instead.  Or recompile using the** [SQLITE_OMIT_TRUNCATE_OPTIMIZATION] compile-time option to disable the** optimization on all queries.**** Requirements:** [H12241] [H12243]**** If a separate thread makes changes on the same database connection** while [sqlite3_changes()] is running then the value returned** is unpredictable and not meaningful.*/int sqlite3_changes(sqlite3*);/*** CAPI3REF: Total Number Of Rows Modified {H12260} <S10600>**** This function returns the number of row changes caused by INSERT,** UPDATE or DELETE statements since the [database connection] was opened.** The count includes all changes from all trigger contexts.  However,** the count does not include changes used to implement REPLACE constraints,** do rollbacks or ABORT processing, or DROP table processing.** The changes are counted as soon as the statement that makes them is** completed (when the statement handle is passed to [sqlite3_reset()] or** [sqlite3_finalize()]).**** SQLite implements the command "DELETE FROM table" without a WHERE clause** by dropping and recreating the table.  (This is much faster than going** through and deleting individual elements from the table.)  Because of this** optimization, the deletions in "DELETE FROM table" are not row changes and** will not be counted by the sqlite3_changes() or [sqlite3_total_changes()]** functions, regardless of the number of elements that were originally** in the table.  To get an accurate count of the number of rows deleted, use** "DELETE FROM table WHERE 1" instead.   Or recompile using the** [SQLITE_OMIT_TRUNCATE_OPTIMIZATION] compile-time option to disable the** optimization on all queries.**** See also the [sqlite3_changes()] interface.**** Requirements:** [H12261] [H12263]**** If a separate thread makes changes on the same database connection** while [sqlite3_total_changes()] is running then the value** returned is unpredictable and not meaningful.*/int sqlite3_total_changes(sqlite3*);/*** CAPI3REF: Interrupt A Long-Running Query {H12270} <S30500>**** This function causes any pending database operation to abort and** return at its earliest opportunity. This routine is typically** called in response to a user action such as pressing "Cancel"** or Ctrl-C where the user wants a long query operation to halt** immediately.**** It is safe to call this routine from a thread different from the** thread that is currently running the database operation.  But it** is not safe to call this routine with a [database connection] that** is closed or might close before sqlite3_interrupt() returns.**** If an SQL operation is very nearly finished at the time when** sqlite3_interrupt() is called, then it might not have an opportunity** to be interrupted and might continue to completion.**** An SQL operation that is interrupted will return [SQLITE_INTERRUPT].** If the interrupted SQL operation is an INSERT, UPDATE, or DELETE** that is inside an explicit transaction, then the entire transaction** will be rolled back automatically.**** A call to sqlite3_interrupt() has no effect on SQL statements** that are started after sqlite3_interrupt() returns.**** Requirements:** [H12271] [H12272]**** If the database connection closes while [sqlite3_interrupt()]** is running then bad things will likely happen.*/void sqlite3_interrupt(sqlite3*);/*** CAPI3REF: Determine If An SQL Statement Is Complete {H10510} <S70200>**** These routines are useful for command-line input to determine if the** currently entered text seems to form complete a SQL statement or** if additional input is needed before sending the text into** SQLite for parsing.  These routines return true if the input string** appears to be a complete SQL statement.  A statement is judged to be** complete if it ends with a semicolon token and is not a fragment of a** CREATE TRIGGER statement.  Semicolons that are embedded within** string literals or quoted identifier names or comments are not** independent tokens (they are part of the token in which they are** embedded) and thus do not count as a statement terminator.**** These routines do not parse the SQL statements thus** will not detect syntactically incorrect SQL.**** Requirements: [H10511] [H10512]**** The input to [sqlite3_complete()] must be a zero-terminated** UTF-8 string.**** The input to [sqlite3_complete16()] must be a zero-terminated** UTF-16 string in native byte order.*/int sqlite3_complete(const char *sql);int sqlite3_complete16(const void *sql);/*** CAPI3REF: Register A Callback To Handle SQLITE_BUSY Errors {H12310} <S40400>**** This routine sets a callback function that might be invoked whenever** an attempt is made to open a database table that another thread** or process has locked.**** If the busy callback is NULL, then [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED]** is returned immediately upon encountering the lock. If the busy callback** is not NULL, then the callback will be invoked with two arguments.**** The first argument to the handler is a copy of the void* pointer which** is the third argument to sqlite3_busy_handler().  The second argument to** the handler callback is the number of times that the busy handler has** been invoked for this locking event.  If the** busy callback returns 0, then no additional attempts are made to** access the database and [SQLITE_BUSY] or [SQLITE_IOERR_BLOCKED] is returned.** If the callback returns non-zero, then another attempt** is made to open the database for reading and the cycle repeats.**** The presence of a busy handler does not guarantee that it will be invoked** when there is lock contention. If SQLite determines that invoking the busy** handler could result in a deadlock, it will go ahead and return [SQLITE_BUSY]** or [SQLITE_IOERR_BLOCKED] instead of invoking the busy handler.** Consider a scenario where one process is holding a read lock that** it is trying to promote to a reserved lock and** a second process is holding a reserved lock that it is trying** to promote to an exclusive lock.  The first process cannot proceed** because it is blocked by the second and the second process cannot** proceed because it is blocked by the first.  If both processes** invoke the busy handlers, neither will make any progress.  Therefore,** SQLite returns [SQLITE_BUSY] for the first process, hoping that this** will induce the first process to release its read lock and allow** the second process to proceed.**** The default busy callback is NULL.**** The [SQLITE_BUSY] error is converted to [SQLITE_IOERR_BLOCKED]** when SQLite is in the middle of a large transaction where all the** changes will not fit into the in-memory cache.  SQLite will** already hold a RESERVED lock on the database file, but it needs** to promote this lock to EXCLUSIVE so that it can spill cache** pages into the database file without harm to concurrent** readers.  If it is unable to promote the lock, then the in-memory** cache will be left in an inconsistent state and so the error** code is promoted from the relatively benign [SQLITE_BUSY] to** the more severe [SQLITE_IOERR_BLOCKED].  This error code promotion** forces an automatic rollback of the changes.  See the** <a href="/cvstrac/wiki?p=CorruptionFollowingBusyError">** CorruptionFollowingBusyError</a> wiki page for a discussion of why** this is important.**** There can only be a single busy handler defined for each** [database connection].  Setting a new busy handler clears any** previously set handler.  Note that calling [sqlite3_busy_timeout()]** will also set or clear the busy handler.**** The busy callback should not take any ac

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -