Documentation Source Text

Hex Artifact Content
Login

Artifact e789620d0a93130cf48d9ffa7c272d56a4661d0b:


0000: 3c 74 69 74 6c 65 3e 53 51 4c 69 74 65 20 49 73  <title>SQLite Is
0010: 20 53 65 6c 66 2d 43 6f 6e 74 61 69 6e 65 64 3c   Self-Contained<
0020: 2f 74 69 74 6c 65 3e 0a 0a 3c 68 32 3e 53 51 4c  /title>..<h2>SQL
0030: 69 74 65 20 49 73 20 53 65 6c 66 2d 43 6f 6e 74  ite Is Self-Cont
0040: 61 69 6e 65 64 3c 2f 68 32 3e 0a 0a 3c 70 3e 0a  ained</h2>..<p>.
0050: 53 51 4c 69 74 65 20 69 73 20 6c 61 72 67 65 6c  SQLite is largel
0060: 79 20 73 65 6c 66 2d 63 6f 6e 74 61 69 6e 65 64  y self-contained
0070: 2e 20 20 49 74 20 72 65 71 75 69 72 65 73 20 76  .  It requires v
0080: 65 72 79 20 6d 69 6e 69 6d 61 6c 0a 73 75 70 70  ery minimal.supp
0090: 6f 72 74 20 66 72 6f 6d 20 65 78 74 65 72 6e 61  ort from externa
00a0: 6c 20 6c 69 62 72 61 72 69 65 73 20 6f 72 20 66  l libraries or f
00b0: 72 6f 6d 20 74 68 65 20 6f 70 65 72 61 74 69 6e  rom the operatin
00c0: 67 20 73 79 73 74 65 6d 2e 0a 54 68 69 73 20 6d  g system..This m
00d0: 61 6b 65 73 20 69 74 20 77 65 6c 6c 20 73 75 69  akes it well sui
00e0: 74 65 64 20 66 6f 72 20 75 73 65 20 69 6e 20 65  ted for use in e
00f0: 6d 62 65 64 64 65 64 20 64 65 76 69 63 65 73 20  mbedded devices 
0100: 74 68 61 74 0a 6c 61 63 6b 20 74 68 65 20 73 75  that.lack the su
0110: 70 70 6f 72 74 20 69 6e 66 72 61 73 74 72 75 63  pport infrastruc
0120: 74 75 72 65 20 6f 66 20 61 20 64 65 73 6b 74 6f  ture of a deskto
0130: 70 20 63 6f 6d 70 75 74 65 72 2e 20 20 54 68 69  p computer.  Thi
0140: 73 0a 61 6c 73 6f 20 6d 61 6b 65 73 20 53 51 4c  s.also makes SQL
0150: 69 74 65 20 61 70 70 72 6f 70 72 69 61 74 65 20  ite appropriate 
0160: 66 6f 72 20 75 73 65 20 77 69 74 68 69 6e 20 61  for use within a
0170: 70 70 6c 69 63 61 74 69 6f 6e 73 20 74 68 61 74  pplications that
0180: 0a 6e 65 65 64 20 74 6f 20 72 75 6e 20 77 69 74  .need to run wit
0190: 68 6f 75 74 20 6d 6f 64 69 66 69 63 61 74 69 6f  hout modificatio
01a0: 6e 20 6f 6e 20 61 20 77 69 64 65 20 76 61 72 69  n on a wide vari
01b0: 65 74 79 20 6f 66 20 63 6f 6d 70 75 74 65 72 73  ety of computers
01c0: 0a 6f 66 20 76 61 72 79 69 6e 67 20 63 6f 6e 66  .of varying conf
01d0: 69 67 75 72 61 74 69 6f 6e 73 2e 0a 3c 2f 70 3e  igurations..</p>
01e0: 0a 0a 3c 70 3e 0a 53 51 4c 69 74 65 20 69 73 20  ..<p>.SQLite is 
01f0: 77 72 69 74 74 65 6e 20 69 6e 20 41 4e 53 49 2d  written in ANSI-
0200: 43 20 61 6e 64 20 73 68 6f 75 6c 64 20 62 65 20  C and should be 
0210: 65 61 73 69 6c 79 20 63 6f 6d 70 69 6c 65 64 20  easily compiled 
0220: 62 79 0a 61 6e 79 20 73 74 61 6e 64 61 72 64 20  by.any standard 
0230: 43 20 63 6f 6d 70 69 6c 65 72 2e 20 20 49 74 20  C compiler.  It 
0240: 6d 61 6b 65 73 20 6d 69 6e 69 6d 61 6c 20 75 73  makes minimal us
0250: 65 20 6f 66 20 74 68 65 20 73 74 61 6e 64 61 72  e of the standar
0260: 64 20 43 0a 6c 69 62 72 61 72 79 2e 20 20 20 54  d C.library.   T
0270: 68 65 20 6f 6e 6c 79 20 72 65 71 75 69 72 65 64  he only required
0280: 20 43 20 6c 69 62 72 61 72 79 20 66 75 6e 63 74   C library funct
0290: 69 6f 6e 73 20 63 61 6c 6c 65 64 20 61 72 65 3a  ions called are:
02a0: 0a 3c 2f 70 3e 0a 0a 3c 75 6c 3e 0a 3c 6c 69 3e  .</p>..<ul>.<li>
02b0: 20 6d 65 6d 73 65 74 28 29 0a 3c 6c 69 3e 20 6d   memset().<li> m
02c0: 65 6d 63 70 79 28 29 0a 3c 6c 69 3e 20 6d 65 6d  emcpy().<li> mem
02d0: 63 6d 70 28 29 0a 3c 6c 69 3e 20 73 74 72 63 6d  cmp().<li> strcm
02e0: 70 28 29 0a 3c 6c 69 3e 20 6d 61 6c 6c 6f 63 28  p().<li> malloc(
02f0: 29 2c 20 66 72 65 65 28 29 2c 20 61 6e 64 20 72  ), free(), and r
0300: 65 61 6c 6c 6f 63 28 29 0a 3c 2f 75 6c 3e 0a 0a  ealloc().</ul>..
0310: 3c 70 3e 0a 53 51 4c 69 74 65 20 63 61 6e 20 62  <p>.SQLite can b
0320: 65 20 63 6f 6e 66 69 67 75 72 65 64 20 61 74 20  e configured at 
0330: 73 74 61 72 74 2d 74 69 6d 65 20 74 6f 20 0a 5b  start-time to .[
0340: 6d 65 6d 73 79 73 35 20 7c 20 75 73 65 20 61 20  memsys5 | use a 
0350: 73 74 61 74 69 63 20 62 75 66 66 65 72 20 69 6e  static buffer in
0360: 20 70 6c 61 63 65 20 6f 66 20 63 61 6c 6c 69 6e   place of callin
0370: 67 20 6d 61 6c 6c 6f 63 28 29 5d 0a 66 6f 72 20  g malloc()].for 
0380: 74 68 65 20 6d 65 6d 6f 72 79 20 69 74 20 6e 65  the memory it ne
0390: 65 64 73 2e 0a 54 68 65 20 64 61 74 65 20 61 6e  eds..The date an
03a0: 64 20 74 69 6d 65 20 53 51 4c 20 66 75 6e 63 74  d time SQL funct
03b0: 69 6f 6e 73 20 70 72 6f 76 69 64 65 64 20 62 79  ions provided by
03c0: 20 53 51 4c 69 74 65 20 72 65 71 75 69 72 65 0a   SQLite require.
03d0: 73 6f 6d 65 20 61 64 64 69 74 69 6f 6e 61 6c 20  some additional 
03e0: 43 20 6c 69 62 72 61 72 79 20 73 75 70 70 6f 72  C library suppor
03f0: 74 2c 20 62 75 74 20 74 68 6f 73 65 20 66 75 6e  t, but those fun
0400: 63 74 69 6f 6e 73 20 63 61 6e 0a 62 65 20 61 6c  ctions can.be al
0410: 73 6f 20 62 65 20 6f 6d 69 74 74 65 64 20 66 72  so be omitted fr
0420: 6f 6d 20 74 68 65 20 62 75 69 6c 64 20 75 73 69  om the build usi
0430: 6e 67 20 63 6f 6d 70 69 6c 65 2d 74 69 6d 65 20  ng compile-time 
0440: 6f 70 74 69 6f 6e 73 2e 0a 3c 2f 70 3e 0a 0a 3c  options..</p>..<
0450: 70 3e 0a 43 6f 6d 6d 75 6e 69 63 61 74 69 6f 6e  p>.Communication
0460: 73 20 62 65 74 77 65 65 6e 20 53 51 4c 69 74 65  s between SQLite
0470: 20 61 6e 64 20 74 68 65 20 6f 70 65 72 61 74 69   and the operati
0480: 6e 67 20 73 79 73 74 65 6d 20 61 6e 64 20 64 69  ng system and di
0490: 73 6b 20 61 72 65 0a 6d 65 64 69 61 74 65 64 20  sk are.mediated 
04a0: 74 68 72 6f 75 67 68 20 61 6e 20 69 6e 74 65 72  through an inter
04b0: 63 68 61 6e 67 65 61 62 6c 65 20 5b 56 46 53 5d  changeable [VFS]
04c0: 20 6c 61 79 65 72 2e 0a 56 46 53 20 6d 6f 64 75   layer..VFS modu
04d0: 6c 65 73 20 66 6f 72 20 55 6e 69 78 20 61 6e 64  les for Unix and
04e0: 20 57 69 6e 64 6f 77 73 0a 61 72 65 20 70 72 6f   Windows.are pro
04f0: 76 69 64 65 64 20 69 6e 20 74 68 65 20 73 6f 75  vided in the sou
0500: 72 63 65 20 74 72 65 65 2e 20 20 49 74 20 69 73  rce tree.  It is
0510: 20 61 20 73 69 6d 70 6c 65 20 6d 61 74 74 65 72   a simple matter
0520: 20 74 6f 20 64 65 76 69 73 65 20 61 6e 0a 61 6c   to devise an.al
0530: 74 65 72 6e 61 74 69 76 65 20 56 46 53 20 66 6f  ternative VFS fo
0540: 72 20 65 6d 62 65 64 64 65 64 20 64 65 76 69 63  r embedded devic
0550: 65 73 2e 0a 3c 2f 70 3e 0a 0a 3c 70 3e 0a 46 6f  es..</p>..<p>.Fo
0560: 72 20 73 61 66 65 20 6f 70 65 72 61 74 69 6f 6e  r safe operation
0570: 20 69 6e 20 6d 75 6c 74 69 2d 74 68 72 65 61 64   in multi-thread
0580: 65 64 20 65 6e 76 69 72 6f 6e 6d 65 6e 74 73 2c  ed environments,
0590: 20 53 51 4c 69 74 65 20 72 65 71 75 69 72 65 73   SQLite requires
05a0: 0a 74 68 65 20 75 73 65 20 6f 66 20 6d 75 74 65  .the use of mute
05b0: 78 65 73 2e 20 20 41 70 70 72 6f 70 72 69 61 74  xes.  Appropriat
05c0: 65 20 6d 75 74 65 78 20 6c 69 62 72 61 72 69 65  e mutex librarie
05d0: 73 20 61 72 65 20 6c 69 6e 6b 65 64 20 61 75 74  s are linked aut
05e0: 6f 6d 61 74 69 63 61 6c 6c 79 0a 66 6f 72 20 57  omatically.for W
05f0: 69 6e 33 32 20 61 6e 64 20 50 4f 53 49 58 20 70  in32 and POSIX p
0600: 6c 61 74 66 6f 72 6d 73 2e 20 20 46 6f 72 20 6f  latforms.  For o
0610: 74 68 65 72 20 73 79 73 74 65 6d 73 2c 20 6d 75  ther systems, mu
0620: 74 65 78 20 70 72 69 6d 69 74 69 76 65 73 0a 63  tex primitives.c
0630: 61 6e 20 62 65 20 61 64 64 65 64 20 61 74 20 73  an be added at s
0640: 74 61 72 74 2d 74 69 6d 65 20 75 73 69 6e 67 20  tart-time using 
0650: 74 68 65 20 0a 5b 73 71 6c 69 74 65 33 5f 63 6f  the .[sqlite3_co
0660: 6e 66 69 67 5d 28 5b 53 51 4c 49 54 45 5f 43 4f  nfig]([SQLITE_CO
0670: 4e 46 49 47 5f 4d 55 54 45 58 5d 2c 2e 2e 2e 29  NFIG_MUTEX],...)
0680: 20 69 6e 74 65 72 66 61 63 65 2e 0a 4d 75 74 65   interface..Mute
0690: 78 65 73 20 61 72 65 20 6f 6e 6c 79 20 72 65 71  xes are only req
06a0: 75 69 72 65 64 20 69 66 20 53 51 4c 69 74 65 20  uired if SQLite 
06b0: 69 73 0a 75 73 65 64 20 62 79 20 6d 6f 72 65 20  is.used by more 
06c0: 74 68 61 6e 20 6f 6e 65 20 74 68 72 65 61 64 20  than one thread 
06d0: 61 74 20 61 20 74 69 6d 65 2e 0a 3c 2f 70 3e 0a  at a time..</p>.
06e0: 0a 3c 70 3e 0a 54 68 65 20 53 51 4c 69 74 65 20  .<p>.The SQLite 
06f0: 73 6f 75 72 63 65 20 63 6f 64 65 20 69 73 20 61  source code is a
0700: 76 61 69 6c 61 62 6c 65 20 61 73 20 61 6e 0a 22  vailable as an."
0710: 5b 61 6d 61 6c 67 61 6d 61 74 69 6f 6e 5d 22 20  [amalgamation]" 
0720: 2d 20 61 20 73 69 6e 67 6c 65 20 6c 61 72 67 65  - a single large
0730: 20 43 20 73 6f 75 72 63 65 20 63 6f 64 65 20 66   C source code f
0740: 69 6c 65 2e 0a 50 72 6f 6a 65 63 74 73 20 74 68  ile..Projects th
0750: 61 74 20 77 61 6e 74 20 74 6f 20 69 6e 63 6c 75  at want to inclu
0760: 64 65 20 53 51 4c 69 74 65 20 63 61 6e 20 64 6f  de SQLite can do
0770: 20 73 6f 20 73 69 6d 70 6c 79 0a 62 79 20 64 72   so simply.by dr
0780: 6f 70 70 69 6e 67 20 74 68 69 73 20 6f 6e 65 20  opping this one 
0790: 73 6f 75 72 63 65 20 66 69 6c 65 20 28 6e 61 6d  source file (nam
07a0: 65 64 20 22 73 71 6c 69 74 65 33 2e 63 22 29 20  ed "sqlite3.c") 
07b0: 61 6e 64 0a 69 74 73 20 63 6f 72 72 65 73 70 6f  and.its correspo
07c0: 6e 64 69 6e 67 20 68 65 61 64 65 72 20 28 22 73  nding header ("s
07d0: 71 6c 69 74 65 33 2e 68 22 29 20 69 6e 74 6f 20  qlite3.h") into 
07e0: 74 68 65 69 72 20 73 6f 75 72 63 65 0a 74 72 65  their source.tre
07f0: 65 20 61 6e 64 20 63 6f 6d 70 69 6c 69 6e 67 20  e and compiling 
0800: 69 74 20 74 6f 67 65 74 68 65 72 20 77 69 74 68  it together with
0810: 20 74 68 65 20 72 65 73 74 20 6f 66 20 74 68 65   the rest of the
0820: 0a 63 6f 64 65 2e 20 20 53 51 4c 69 74 65 20 64  .code.  SQLite d
0830: 6f 65 73 20 6e 6f 74 20 6c 69 6e 6b 20 61 67 61  oes not link aga
0840: 69 6e 73 74 20 61 6e 79 20 65 78 74 65 72 6e 61  inst any externa
0850: 6c 20 6c 69 62 72 61 72 69 65 73 0a 28 6f 74 68  l libraries.(oth
0860: 65 72 20 74 68 61 6e 20 74 68 65 20 43 20 6c 69  er than the C li
0870: 62 72 61 72 79 2c 20 61 73 20 64 65 73 63 72 69  brary, as descri
0880: 62 65 64 20 61 62 6f 76 65 29 20 61 6e 64 20 64  bed above) and d
0890: 6f 65 73 0a 6e 6f 74 20 72 65 71 75 69 72 65 20  oes.not require 
08a0: 61 6e 79 20 73 70 65 63 69 61 6c 20 62 75 69 6c  any special buil
08b0: 64 20 73 75 70 70 6f 72 74 2e 0a 3c 2f 70 3e 0a  d support..</p>.