perldoc > DBD::SQLite

๐Ÿ“› NAME

DBD::SQLite โ€” Self-contained RDBMS in a DBI Driver

๐Ÿš€ Quick Reference

Use CaseCommandDescription
๐Ÿ“‚ Connect to file DBDBI->connect("dbi:SQLite:dbname=$file","","")Opens/creates a file-based SQLite database
๐Ÿง  In-memory DBDBI->connect("dbi:SQLite::memory:","","")Temporary in-memory database for testing
๐Ÿ”‘ Enable foreign keys$dbh->do("PRAGMA foreign_keys = ON")Enforce foreign key constraints
โฑ๏ธ Busy timeout$dbh->sqlite_busy_timeout(5000)Wait up to 5 seconds when DB is locked
โšก Performance$dbh->do("PRAGMA synchronous = OFF")Faster writes, slight corruption risk
๐Ÿ“ WAL mode$dbh->do("PRAGMA journal_mode = WAL")Write-ahead logging for concurrency
๐Ÿ”ง Custom function$dbh->sqlite_create_function('now',0,sub{time})Register a Perl function for use in SQL
๐Ÿ’พ Backup to file$dbh->sqlite_backup_to_file($filename)Backup current DB to a file
๐Ÿ“ฅ Backup from file$dbh->sqlite_backup_from_file($filename)Restore DB from a backup file
๐Ÿ”Œ Load extension$dbh->sqlite_load_extension($file)Load an external SQLite extension
๐Ÿ”ข Last insert ID$dbh->last_insert_id("","","","")Retrieve the last inserted rowid
๐Ÿ“Š Cache size$dbh->do("PRAGMA cache_size = 800000")Set DB cache to ~800MB
๐Ÿ”’ Read-only openconnect(...,{sqlite_open_flags=>SQLITE_OPEN_READONLY})Open database in read-only mode
๐ŸŒ Unicode mode$dbh->{sqlite_string_mode}=DBD_SQLITE_STRING_MODE_UNICODE_FALLBACKProper Unicode handling
๐Ÿ“‹ Multiple statementsconnect(...,{sqlite_allow_multiple_statements=>1})Execute SQL dumps via do()

๐Ÿ“– SYNOPSIS

use DBI;
my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile","","");

๐Ÿ“ DESCRIPTION

SQLite is a public domain file-based relational database engine that you can find at <https://www.sqlite.org/>.

DBD::SQLite is a Perl DBI driver for SQLite, that includes the entire thing in the distribution. So in order to get a fast transaction capable RDBMS working for your perl project you simply have to install this module, and nothing else.

SQLite supports the following features:

๐Ÿ”ข SQLITE VERSION

DBD::SQLite is usually compiled with a bundled SQLite library (SQLite version 3.36.0 as of this release) for consistency. You can check:

$DBD::SQLite::sqlite_version      # "3.x.y"
$DBD::SQLite::sqlite_version_number  # "3xxxyyy"
DBD::SQLite::Constants::SQLITE_VERSION_NUMBER()

You can also check compile options via DBD::SQLite::compile_options().

โš ๏ธ NOTABLE DIFFERENCES FROM OTHER DRIVERS

๐Ÿ’พ Database Name Is A File Name

SQLite creates a file per database. Pass the path in the DBI connection string:

my $dbh = DBI->connect("dbi:SQLite:dbname=$dbfile","","");

The file is opened in read/write mode and created if it doesn't exist. The directory must be writable (SQLite creates temp files there).

my $dbh = DBI->connect("dbi:SQLite:uri=file:$path_to_dbfile?mode=rwc");

Note: URIs are for local databases only, not remote connections.

๐Ÿ”’ Read-Only Database

use DBD::SQLite::Constants qw/:file_open/;
my $dbh = DBI->connect("dbi:SQLite:$dbfile", undef, undef, {
  sqlite_open_flags => SQLITE_OPEN_READONLY,
});

As of 1.49_05, you can also set ReadOnly attribute to true at connect time.

๐Ÿ“‹ DBD::SQLite And File::Temp

($fh, $filename) = tempfile($template, EXLOCK => 0);

๐Ÿ’ก Tip: For temporary databases, prefer :memory: โ€” it's cleaner for testing.

๐Ÿด DBD::SQLite and fork()

โš ๏ธ Under Unix, do not carry an open SQLite database across a fork() call. Re-open the database after forking. Consider tweaking sqlite_busy_timeout and sqlite_use_immediate_transaction for forked environments.

๐Ÿ”ง Accessing A Database With Other Tools

dbish dbi:SQLite:foo.db

Or install the standalone sqlite3 command line tool from sqlite.org.

๐Ÿ“ฆ Blobs

As of v1.11, blobs "just work" as text columns. For native BLOB storage, use SQL_BLOB:

use DBI qw(:sql_types);
my $blob = `cat foo.jpg`;
my $sth = $dbh->prepare("INSERT INTO mytable VALUES (1, ?)");
$sth->bind_param(1, $blob, SQL_BLOB);
$sth->execute();

Retrieval works normally via fetch.

๐Ÿ”ข Functions And Bind Parameters

โš ๏ธ By default, DBD::SQLite treats all bind values as text (quoted). This causes issues with numeric comparisons. Four workarounds:

  1. Use bind_param() explicitly:
use DBI qw(:sql_types);
$sth->bind_param(1, 5, SQL_INTEGER);
  1. Add zero: count(*) > (? + 0)
  2. Use cast(): count(*) > cast(? as integer)
  3. Set sqlite_see_if_its_a_number: (easiest, but may cause issues with existing text-as-number data)
$dbh->{sqlite_see_if_its_a_number} = 1;

โ“ Placeholders

SQLite supports ?, :AAAA, and numbered placeholders (?1, ?2). Avoid mixing ? with numbered/named placeholders.

my $sth = $dbh->prepare('update TABLE set a=?1 where b=?2 and a IS NOT ?1');
$sth->execute(1, 2);

โš™๏ธ Pragma

SQLite PRAGMAs modify operation or query internal data. Key pragmas:

๐Ÿ”‘ Foreign Keys

Supported since SQLite 3.6.19. Disabled by default. Enable immediately after connecting:

$dbh->do("PRAGMA foreign_keys = ON");

Disable with: $dbh->do("PRAGMA foreign_keys = OFF");

๐Ÿ”„ Transactions

Behavior depends on AutoCommit:

$dbh->{AutoCommit} = 1;
$dbh->begin_work;   # or $dbh->do('BEGIN TRANSACTION')
$dbh->commit;       # AutoCommit restored

$dbh->{AutoCommit} = 0;
# BEGIN issued automatically
$dbh->commit;       # next statement auto-begins
$dbh->{AutoCommit} = 1;  # exit transactional mode

๐Ÿ”’ Transaction and Database Locking

Default SQLite transaction is "deferred" (locks acquired on first read/write). DBD::SQLite issues BEGIN IMMEDIATE by default since 1.38_01 to prevent deadlocks. To use deferred:

my $dbh = DBI->connect("dbi:SQLite::memory:", "", "", {
  sqlite_use_immediate_transaction => 0,
});

๐Ÿ $sth->finish and Transaction Rollback

โš ๏ธ SQLite prohibits ROLLBACK of unfinished SELECT statements. Call finish before rollback:

$sth = $dbh->prepare("SELECT * FROM t");
$dbh->begin_work;
eval {
    $sth->execute;
    $row = $sth->fetch;
    die "For some reason";
};
if($@) {
   $sth->finish;  # REQUIRED for SQLite
   $dbh->rollback;
} else {
   $dbh->commit;
}

๐Ÿ“‹ Processing Multiple Statements At A Time

Set sqlite_allow_multiple_statements to true; then do() handles multiple statements. Use $sth->{sqlite_unprepared_statements} to retrieve leftovers from prepare.

โšก Performance

SQLite is very fast. Tips for best performance:

$dbh->do("PRAGMA cache_size = 800000");  # ~800MB cache

๐Ÿ”ง DRIVER PRIVATE ATTRIBUTES

๐Ÿ—„๏ธ Database Handle Attributes

๐Ÿ“„ Statement Handle Attributes

๐Ÿ“‹ METHODS

table_info

$sth = $dbh->table_info(undef, $schema, $table, $type, \%attr);

Returns tables/views. Schema and table do LIKE search. $type accepts comma-separated: 'TABLE', 'VIEW', 'LOCAL TEMPORARY', 'SYSTEM TABLE'. Returns fields: TABLE_CAT (always NULL), TABLE_SCHEM, TABLE_NAME, TABLE_TYPE.

primary_key, primary_key_info

@names = $dbh->primary_key(undef, $schema, $table);
$sth   = $dbh->primary_key_info(undef, $schema, $table, \%attr);

foreign_key_info

$sth = $dbh->foreign_key_info(undef, $pk_schema, $pk_table,
                          undef, $fk_schema, $fk_table);

Non-empty fields: PKTABLE_NAME, PKCOLUMN_NAME, FKTABLE_NAME, FKCOLUMN_NAME, KEY_SEQ, UPDATE_RULE, DELETE_RULE, DEFERRABILITY, UNIQUE_OR_PRIMARY. โš ๏ธ Foreign key support must be enabled via PRAGMA foreign_keys = ON.

statistics_info

$sth = $dbh->statistics_info(undef, $schema, $table, $unique_only, $quick);

Non-empty fields: TABLE_SCHEM, TABLE_NAME, NON_UNIQUE, INDEX_NAME, TYPE ('btree'), ORDINAL_POSITION, COLUMN_NAME.

ping

my $bool = $dbh->ping;

Returns true if database file exists (or is in-memory) and connection is active.

โš™๏ธ DRIVER PRIVATE METHODS

If using DBI >= 1.608, use the sqlite_ methods directly. For older DBI:

$dbh->func( ..., "(method name without sqlite_ prefix)" );

โš ๏ธ Exception: sqlite_trace should always be called with its full name to avoid conflict with DBI's trace().

$dbh->sqlite_last_insert_rowid()

Returns the last inserted rowid. ๐Ÿ’ก Prefer DBI's $h->last_insert_id($catalog, $schema, $table_name, $field_name [, \%attr]) instead. Equivalent: $h->last_insert_id("","","","").

$dbh->sqlite_db_filename()

Retrieve current (main) database filename. Returns empty string or undef for in-memory/temporary databases.

$dbh->sqlite_busy_timeout() / $dbh->sqlite_busy_timeout( $ms )

Get/set the busy timeout in milliseconds.

$dbh->sqlite_create_function( $name, $argc, $code_ref, $flags )

Register a custom SQL function. $argc = -1 means any number of arguments. $flags (optional): SQLITE_DETERMINISTIC for better performance. Return a scalar (treated as text/number), or an arrayref [value, SQL_BLOB] for typed returns.

$dbh->sqlite_create_function( 'now', 0, sub { return time } );
# Usage: INSERT INTO mytable ( now() );

# Typed return (BLOB):
$dbh->sqlite_create_function( 'md5', 1, sub { return [md5($_[0]), SQL_BLOB] } );

๐Ÿ” REGEXP function

SQLite includes syntactic support for REGEXP but no implementation. DBD::SQLite automatically registers one using Perl regex with current locale.

SELECT * from table WHERE column REGEXP '\bA\w+'
SELECT * from table WHERE column REGEXP '(?i:\bA\w+)'  # case-insensitive

โš ๏ธ Regexp matching does not use SQLite indices โ€” iterates over all rows.

$dbh->sqlite_create_collation( $name, $code_ref )

Register a custom collation function for sorting. See COLLATION FUNCTIONS below.

$dbh->sqlite_collation_needed( $code_ref )

Register a callback invoked when an undefined collation is requested. Callback: $code_ref->($dbh, $collation_name).

$dbh->sqlite_create_aggregate( $name, $argc, $pkg, $flags )

Register a custom aggregate function. The package must implement three methods: new(), step(@_), and finalize(). $flags optionally includes SQLITE_DETERMINISTIC.

package variance;
sub new { bless [], shift; }
sub step {
    my ( $self, $value ) = @_;
    push @$self, $value;
}
sub finalize {
    my $self = $_[0];
    my $n = @$self;
    return undef unless $n && $n != 1;
    my $mu = 0;
    foreach my $v ( @$self ) { $mu += $v; }
    $mu /= $n;
    my $sigma = 0;
    foreach my $v ( @$self ) { $sigma += ($v - $mu)**2; }
    $sigma = $sigma / ($n - 1);
    return $sigma;
}
$dbh->sqlite_create_aggregate( "variance", 1, 'variance' );

Usage: SELECT group_name, variance(score) FROM results GROUP BY group_name;

$dbh->sqlite_progress_handler( $n_opcodes, $code_ref )

Invoke a handler periodically during long-running calls. Return non-zero to interrupt. Pass undef to unregister.

$dbh->sqlite_commit_hook( $code_ref )

Callback invoked on commit. Return non-zero to convert commit to rollback. Returns previous callback ref. Pass undef to disable.

$dbh->sqlite_rollback_hook( $code_ref )

Callback invoked on rollback. Returns previous callback ref.

$dbh->sqlite_update_hook( $code_ref )

Callback invoked on row insert/update/delete: $code_ref->($action_code, $database, $table, $rowid). Action codes: DBD::SQLite::INSERT, DBD::SQLite::DELETE, DBD::SQLite::UPDATE.

$dbh->sqlite_set_authorizer( $code_ref )

Register an authorizer for SQL compilation. Callback: $code_ref->($action_code, $string1, $string2, $database, $trigger_or_view). Return DBD::SQLite::OK, DBD::SQLite::IGNORE, or DBD::SQLite::DENY.

$dbh->sqlite_backup_from_file( $filename )

Backup from a file into the current connection (handy for populating :memory:).

$dbh->sqlite_backup_to_file( $filename )

Backup current database to a file.

$dbh->sqlite_backup_from_dbh( $another_dbh )

Backup from another database handle into current connection.

$dbh->sqlite_backup_to_dbh( $another_dbh )

Backup current database into another handle.

$dbh->sqlite_enable_load_extension( $bool )

Enable/disable loading external SQLite extensions.

$dbh->sqlite_enable_load_extension(1);
$sth = $dbh->prepare("select load_extension('libsqlitefunctions.so')")
  or die "Cannot prepare: " . $dbh->errstr();

$dbh->sqlite_load_extension( $file, $proc )

Load an extension directly. $file mandatory, $proc optional. Requires sqlite_enable_load_extension first.

$dbh->sqlite_trace( $code_ref )

Trace callback when SQL statements execute: $code_ref->($statement). See also DBI's TRACING.

$dbh->sqlite_profile( $code_ref )

โš ๏ธ Experimental. Profile callback: $code_ref->($statement, $elapsed_time) (time in ms). See also DBI::Profile.

$dbh->sqlite_table_column_metadata( $dbname, $tablename, $columnname )

๐Ÿ”’ Internal use only.

$dbh->sqlite_db_status()

Returns hashref of DB connection status (cache usage, etc.). Pass 0 to reset.

$sth->sqlite_st_status()

Returns hashref of statement status (full table scan count, etc.). Pass 0 to reset.

my $status = $sth->sqlite_st_status();
my $cur = $status->{fullscan_step};

$dbh->sqlite_db_config( $id, $new_integer_value )

Configure database behavior. Pass negative value to query without changing.

use DBD::SQLite::Constants qw/:database_connection_configuration_options/;
$dbh->sqlite_db_config( SQLITE_DBCONFIG_DEFENSIVE, 1 );
$dbh->sqlite_db_config( SQLITE_DBCONFIG_ENABLE_FTS3_TOKENIZER, 0 );
my $current = $dbh->sqlite_db_config( SQLITE_DBCONFIG_DEFENSIVE, -1 );

$dbh->sqlite_create_module()

Register a virtual table module. See DBD::SQLite::VirtualTable.

$dbh->sqlite_limit( $category_id, $new_value )

Set/get run-time limits. Category IDs from DBD::SQLite::Constants. Negative value = query only.

$dbh->sqlite_get_autocommit()

Returns true if internal SQLite connection is in autocommit mode. May differ from $dbh->{AutoCommit}.

$dbh->sqlite_txn_state()

Returns internal SQLite transaction state: SQLITE_TXN_NONE, SQLITE_TXN_READ, SQLITE_TXN_WRITE. Returns -1 if unsupported or bad schema name.

๐Ÿ“ฆ DRIVER FUNCTIONS

my $status = DBD::SQLite::sqlite_status();
my $cur  = $status->{memory_used}{current};
my $high = $status->{memory_used}{highwater};

๐Ÿงฉ DRIVER CONSTANTS

Available when you use DBD::SQLite; at compile time. See <https://www.sqlite.org/c3ref/constlist.html>.

๐Ÿ” Authorizer Return Codes

DBD::SQLite::OK
DBD::SQLite::DENY
DBD::SQLite::IGNORE

โšก Action Codes

Used with sqlite_set_authorizer. Each has associated string1 and string2:

# constant              string1         string2
CREATE_INDEX            Index Name      Table Name
CREATE_TABLE            Table Name      undef
CREATE_TEMP_INDEX       Index Name      Table Name
CREATE_TEMP_TABLE       Table Name      undef
CREATE_TEMP_TRIGGER     Trigger Name    Table Name
CREATE_TEMP_VIEW        View Name       undef
CREATE_TRIGGER          Trigger Name    Table Name
CREATE_VIEW             View Name       undef
DELETE                  Table Name      undef
DROP_INDEX              Index Name      Table Name
DROP_TABLE              Table Name      undef
DROP_TEMP_INDEX         Index Name      Table Name
DROP_TEMP_TABLE         Table Name      undef
DROP_TEMP_TRIGGER       Trigger Name    Table Name
DROP_TEMP_VIEW          View Name       undef
DROP_TRIGGER            Trigger Name    Table Name
DROP_VIEW               View Name       undef
INSERT                  Table Name      undef
PRAGMA                  Pragma Name     1st arg or undef
READ                    Table Name      Column Name
SELECT                  undef           undef
TRANSACTION             Operation       undef
UPDATE                  Table Name      Column Name
ATTACH                  Filename        undef
DETACH                  Database Name   undef
ALTER_TABLE             Database Name   Table Name
REINDEX                 Index Name      undef
ANALYZE                 Table Name      undef
CREATE_VTABLE           Table Name      Module Name
DROP_VTABLE             Table Name      Module Name
FUNCTION                undef           Function Name
SAVEPOINT               Operation       Savepoint Name

Example authorizer forbidding DELETE:

use DBD::SQLite;
$dbh->sqlite_set_authorizer(sub {
  my $action_code = shift;
  return $action_code == DBD::SQLite::DELETE ? DBD::SQLite::DENY
                                             : DBD::SQLite::OK;
});

๐Ÿ”ค COLLATION FUNCTIONS

๐Ÿ“– Definition

SQLite v3 supports user-defined collation sequences for comparing text values. See <https://www.sqlite.org/datatype3.html#collation>.

๐Ÿ—๏ธ Builtin collation sequences

๐Ÿ“ Usage

CREATE TABLE foo(
    txt1 COLLATE perl,
    txt2 COLLATE perllocale,
    txt3 COLLATE nocase
);

SELECT * FROM foo ORDER BY name COLLATE perllocale;

๐ŸŒ Unicode handling

Set sqlite_unicode at connect time for proper UTF-8 flagging in collation functions:

my $dbh = DBI->connect(
    "dbi:SQLite:dbname=foo", "", "",
    {
        RaiseError     => 1,
        sqlite_unicode => 1,
    }
);

โž• Adding user-defined collations

Use the %DBD::SQLite::COLLATION hash for on-demand loading. โš ๏ธ The hash is write-only โ€” new entries only; overwriting/deleting raises an exception.

use DBD::SQLite;
$DBD::SQLite::COLLATION{no_accents} = sub {
  my ( $a, $b ) = map lc, @_;
  tr[ร รกรขรฃรครฅรงรจรฉรชรซรฌรญรฎรฏรฑรฒรณรดรตรถรนรบรปรผรฝ]
    [aaaaaacdeeeeiiiinoooooouuuuy] for $a, $b;
  $a cmp $b;
};
my $sql = "SELECT ... FROM ... ORDER BY ... COLLATE no_accents";

๐Ÿ”Ž FULLTEXT SEARCH

SQLite bundles an extension for full-text indexing (FTS). See DBD::SQLite::Fulltext_search for details.

๐ŸŒณ R* TREE SUPPORT

The RTREE extension enables range/multidimensional queries โ€” ideal for geospatial data:

CREATE VIRTUAL TABLE city_buildings USING rtree(
   id,               -- Integer primary key
   minLong, maxLong, -- Minimum and maximum longitude
   minLat, maxLat    -- Minimum and maximum latitude
);

Query for containment or overlap:

# IDs contained within query coordinates
SELECT id FROM city_buildings
   WHERE  minLong >= ? AND maxLong <= ?
   AND    minLat  >= ? AND maxLat  <= ?

# IDs overlapping query coordinates
SELECT id FROM city_buildings
   WHERE    maxLong >= ? AND minLong <= ?
   AND      maxLat  >= ? AND minLat  <= ?

See <https://www.sqlite.org/rtree.html>. Custom R-Tree callbacks not yet implemented.

๐Ÿงฉ VIRTUAL TABLES IMPLEMENTED IN PERL

See DBD::SQLite::VirtualTable. Bundled virtual tables:

๐Ÿ”Œ FOR DBD::SQLITE EXTENSION AUTHORS

Retrieve bundled SQLite C source/header (since 1.30_01):

use File::ShareDir 'dist_dir';
use File::Spec::Functions 'catfile';

my $sqlite3_h = catfile(dist_dir('DBD-SQLite'), 'sqlite3.h');

# Extract specific header from amalgamated sqlite3.c:
my $what_i_want = 'parse.h';
my $sqlite3_c = catfile(dist_dir('DBD-SQLite'), 'sqlite3.c');
open my $fh, '<', $sqlite3_c or die $!;
my $code = do { local $/; <$fh> };
my ($parse_h) = $code =~ m{(
  /\*+[ ]Begin[ ]file[ ]$what_i_want[ ]\*+
  .+?
  /\*+[ ]End[ ]of[ ]$what_i_want[ ]\*+/
)}sx;

Add DBD::SQLite to your CONFIGURE_REQUIRES to ensure consistent C sources.

๐Ÿ“‹ TO DO

๐Ÿ†˜ SUPPORT

๐Ÿ› Report bugs to GitHub: <https://github.com/DBD-SQLite/DBD-SQLite/issues> or RT: <http://rt.cpan.org/NoAuth/ReportBug.html?Queue=DBD-SQLite>

๐Ÿ“‚ Master repository: <https://github.com/DBD-SQLite/DBD-SQLite>

๐Ÿ“ง Mailing list: <http://lists.scsys.co.uk/cgi-bin/mailman/listinfo/dbd-sqlite>

โš ๏ธ Bugs in bundled sqlite3.[ch] should be reported to SQLite developers at sqlite.org.

๐Ÿ‘ฅ AUTHORS

Matt Sergeant <matt AT sergeant.org>, Francis J. Lacoste <flacoste AT logreport.org>, Wolfgang Sourdeau <wolfgang AT logreport.org>, Adam Kennedy <adamk AT cpan.org>, Max Maischein <corion AT cpan.org>, Laurent Dami <dami AT cpan.org>, Kenichi Ishigaki <ishigaki AT cpan.org>

ยฉ๏ธ COPYRIGHT

The bundled SQLite code is Public Domain.

DBD::SQLite is copyright 2002โ€“2007 Matt Sergeant. Some parts copyright 2008 Francis J. Lacoste, 2008 Wolfgang Sourdeau, 2008โ€“2013 Adam Kennedy, 2009โ€“2013 Kenichi Ishigaki. Some parts derived from DBD::SQLite::Amalgamation copyright 2008 Audrey Tang.

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

DBD::SQLite
๐Ÿ“› NAME ๐Ÿš€ Quick Reference ๐Ÿ“– SYNOPSIS ๐Ÿ“ DESCRIPTION ๐Ÿ”ข SQLITE VERSION โš ๏ธ NOTABLE DIFFERENCES FROM OTHER DRIVERS
๐Ÿ’พ Database Name Is A File Name ๐Ÿ”’ Read-Only Database ๐Ÿ“‹ DBD::SQLite And File::Temp ๐Ÿด DBD::SQLite and fork() ๐Ÿ”ง Accessing A Database With Other Tools ๐Ÿ“ฆ Blobs ๐Ÿ”ข Functions And Bind Parameters โ“ Placeholders โš™๏ธ Pragma ๐Ÿ”‘ Foreign Keys ๐Ÿ”„ Transactions ๐Ÿ”’ Transaction and Database Locking ๐Ÿ $sth->finish and Transaction Rollback ๐Ÿ“‹ Processing Multiple Statements At A Time โšก Performance
๐Ÿ”ง DRIVER PRIVATE ATTRIBUTES
๐Ÿ—„๏ธ Database Handle Attributes ๐Ÿ“„ Statement Handle Attributes
๐Ÿ“‹ METHODS
table_info primary_key, primary_key_info foreign_key_info statistics_info ping
โš™๏ธ DRIVER PRIVATE METHODS
$dbh->sqlite_last_insert_rowid() $dbh->sqlite_db_filename() $dbh->sqlite_busy_timeout() / $dbh->sqlite_busy_timeout( $ms ) $dbh->sqlite_create_function( $name, $argc, $code_ref, $flags ) $dbh->sqlite_create_collation( $name, $code_ref ) $dbh->sqlite_collation_needed( $code_ref ) $dbh->sqlite_create_aggregate( $name, $argc, $pkg, $flags ) $dbh->sqlite_progress_handler( $n_opcodes, $code_ref ) $dbh->sqlite_commit_hook( $code_ref ) $dbh->sqlite_rollback_hook( $code_ref ) $dbh->sqlite_update_hook( $code_ref ) $dbh->sqlite_set_authorizer( $code_ref ) $dbh->sqlite_backup_from_file( $filename ) $dbh->sqlite_backup_to_file( $filename ) $dbh->sqlite_backup_from_dbh( $another_dbh ) $dbh->sqlite_backup_to_dbh( $another_dbh ) $dbh->sqlite_enable_load_extension( $bool ) $dbh->sqlite_load_extension( $file, $proc ) $dbh->sqlite_trace( $code_ref ) $dbh->sqlite_profile( $code_ref ) $dbh->sqlite_table_column_metadata( $dbname, $tablename, $columnname ) $dbh->sqlite_db_status() $sth->sqlite_st_status() $dbh->sqlite_db_config( $id, $new_integer_value ) $dbh->sqlite_create_module() $dbh->sqlite_limit( $category_id, $new_value ) $dbh->sqlite_get_autocommit() $dbh->sqlite_txn_state()
๐Ÿ“ฆ DRIVER FUNCTIONS ๐Ÿงฉ DRIVER CONSTANTS
๐Ÿ” Authorizer Return Codes โšก Action Codes
๐Ÿ”ค COLLATION FUNCTIONS
๐Ÿ“– Definition ๐Ÿ—๏ธ Builtin collation sequences ๐Ÿ“ Usage ๐ŸŒ Unicode handling โž• Adding user-defined collations
๐Ÿ”Ž FULLTEXT SEARCH ๐ŸŒณ R* TREE SUPPORT ๐Ÿงฉ VIRTUAL TABLES IMPLEMENTED IN PERL ๐Ÿ”Œ FOR DBD::SQLITE EXTENSION AUTHORS ๐Ÿ“‹ TO DO ๐Ÿ†˜ SUPPORT ๐Ÿ‘ฅ AUTHORS ยฉ๏ธ COPYRIGHT

Generated by phpman v4.9.26-1-g511901d · Markdown · JSON · MCP Author: Che Dong Under GNU General Public License
2026-08-08 12:37 @216.73.216.150
CrawledBy Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
Valid XHTML 1.0 Transitional!Valid CSS!
Enhanced by LLM: deepseek-v4-flash / taotoken.net / www.chedong.com - original format

^_top_^