System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 44a50638d47261be702a4d7dbb5797bcd0870fed:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 0d 0a 20 2a 20 41 44  *********.. * AD
0040: 4f 2e 4e 45 54 20 32 2e 30 20 44 61 74 61 20 50  O.NET 2.0 Data P
0050: 72 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69  rovider for SQLi
0060: 74 65 20 56 65 72 73 69 6f 6e 20 33 2e 58 0d 0a  te Version 3.X..
0070: 20 2a 20 57 72 69 74 74 65 6e 20 62 79 20 52 6f   * Written by Ro
0080: 62 65 72 74 20 53 69 6d 70 73 6f 6e 20 28 72 6f  bert Simpson (ro
0090: 62 65 72 74 40 62 6c 61 63 6b 63 61 73 74 6c 65  bert@blackcastle
00a0: 73 6f 66 74 2e 63 6f 6d 29 0d 0a 20 2a 20 0d 0a  soft.com).. * ..
00b0: 20 2a 20 52 65 6c 65 61 73 65 64 20 74 6f 20 74   * Released to t
00c0: 68 65 20 70 75 62 6c 69 63 20 64 6f 6d 61 69 6e  he public domain
00d0: 2c 20 75 73 65 20 61 74 20 79 6f 75 72 20 6f 77  , use at your ow
00e0: 6e 20 72 69 73 6b 21 0d 0a 20 2a 2a 2a 2a 2a 2a  n risk!.. ******
00f0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0100: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0110: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0120: 2a 2a 2f 0d 0a 0d 0a 6e 61 6d 65 73 70 61 63 65  **/....namespace
0130: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
0140: 69 74 65 0d 0a 7b 0d 0a 20 20 75 73 69 6e 67 20  ite..{..  using 
0150: 53 79 73 74 65 6d 3b 0d 0a 20 20 75 73 69 6e 67  System;..  using
0160: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 43 6f 6d   System.Data.Com
0170: 6d 6f 6e 3b 0d 0a 0d 0a 23 69 66 20 21 50 4c 41  mon;....#if !PLA
0180: 54 46 4f 52 4d 5f 43 4f 4d 50 41 43 54 46 52 41  TFORM_COMPACTFRA
0190: 4d 45 57 4f 52 4b 0d 0a 20 20 2f 2f 2f 20 3c 73  MEWORK..  /// <s
01a0: 75 6d 6d 61 72 79 3e 0d 0a 20 20 2f 2f 2f 20 53  ummary>..  /// S
01b0: 51 4c 69 74 65 20 69 6d 70 6c 65 6d 65 6e 74 61  QLite implementa
01c0: 74 69 6f 6e 20 6f 66 20 3c 73 65 65 20 63 72 65  tion of <see cre
01d0: 66 3d 22 44 62 50 72 6f 76 69 64 65 72 46 61 63  f="DbProviderFac
01e0: 74 6f 72 79 22 20 2f 3e 2e 0d 0a 20 20 2f 2f 2f  tory" />...  ///
01f0: 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 70   </summary>..  p
0200: 75 62 6c 69 63 20 73 65 61 6c 65 64 20 70 61 72  ublic sealed par
0210: 74 69 61 6c 20 63 6c 61 73 73 20 53 51 4c 69 74  tial class SQLit
0220: 65 46 61 63 74 6f 72 79 20 3a 20 44 62 50 72 6f  eFactory : DbPro
0230: 76 69 64 65 72 46 61 63 74 6f 72 79 2c 20 49 44  viderFactory, ID
0240: 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 7b 0d 0a  isposable..  {..
0250: 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79      /// <summary
0260: 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 6f 6e 73 74  >..    /// Const
0270: 72 75 63 74 73 20 61 20 6e 65 77 20 69 6e 73 74  ructs a new inst
0280: 61 6e 63 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ance...    /// <
0290: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
02a0: 75 62 6c 69 63 20 53 51 4c 69 74 65 46 61 63 74  ublic SQLiteFact
02b0: 6f 72 79 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20  ory()..    {..  
02c0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
02d0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 6f 20 6e 6f    // NOTE: Do no
02e0: 74 68 69 6e 67 20 68 65 72 65 20 6e 6f 77 2e 20  thing here now. 
02f0: 20 41 6c 6c 20 74 68 65 20 6c 6f 67 67 69 6e 67   All the logging
0300: 20 73 65 74 75 70 20 72 65 6c 61 74 65 64 20 63   setup related c
0310: 6f 64 65 20 68 61 73 0d 0a 20 20 20 20 20 20 20  ode has..       
0320: 20 2f 2f 20 20 20 20 20 20 20 62 65 65 6e 20 6d   //       been m
0330: 6f 76 65 64 20 74 6f 20 74 68 65 20 6e 65 77 20  oved to the new 
0340: 53 51 4c 69 74 65 4c 6f 67 20 73 74 61 74 69 63  SQLiteLog static
0350: 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20 20 20 20   class...       
0360: 20 2f 2f 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20   //..    }....  
0370: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
0380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
03d0: 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e  /....    #region
03e0: 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d   IDisposable Mem
03f0: 62 65 72 73 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73  bers..    /// <s
0400: 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f  ummary>..    ///
0410: 20 43 6c 65 61 6e 73 20 75 70 20 72 65 73 6f 75   Cleans up resou
0420: 72 63 65 73 20 28 6e 61 74 69 76 65 20 61 6e 64  rces (native and
0430: 20 6d 61 6e 61 67 65 64 29 20 61 73 73 6f 63 69   managed) associ
0440: 61 74 65 64 20 77 69 74 68 20 74 68 65 20 63 75  ated with the cu
0450: 72 72 65 6e 74 20 69 6e 73 74 61 6e 63 65 2e 0d  rrent instance..
0460: 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61  .    /// </summa
0470: 72 79 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20  ry>..    public 
0480: 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a  void Dispose()..
0490: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 44      {..        D
04a0: 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20  ispose(true);.. 
04b0: 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65         GC.Suppre
04c0: 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29  ssFinalize(this)
04d0: 3b 0d 0a 20 20 20 20 7d 0d 0a 20 20 20 20 23 65  ;..    }..    #e
04e0: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
04f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0540: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
0550: 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f 6e 20 49  ...    #region I
0560: 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74  Disposable "Patt
0570: 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20  ern" Members..  
0580: 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64    private bool d
0590: 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 70 72  isposed;..    pr
05a0: 69 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b  ivate void Check
05b0: 44 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68  Disposed() /* th
05c0: 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 7b 0d 0a 23  row */..    {..#
05d0: 69 66 20 54 48 52 4f 57 5f 4f 4e 5f 44 49 53 50  if THROW_ON_DISP
05e0: 4f 53 45 44 0d 0a 20 20 20 20 20 20 20 20 69 66  OSED..        if
05f0: 20 28 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20   (disposed)..   
0600: 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
0610: 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65  ew ObjectDispose
0620: 64 45 78 63 65 70 74 69 6f 6e 28 74 79 70 65 6f  dException(typeo
0630: 66 28 53 51 4c 69 74 65 46 61 63 74 6f 72 79 29  f(SQLiteFactory)
0640: 2e 4e 61 6d 65 29 3b 0d 0a 23 65 6e 64 69 66 0d  .Name);..#endif.
0650: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
0660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
06b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
06c0: 0a 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69  .    private voi
06d0: 64 20 44 69 73 70 6f 73 65 28 62 6f 6f 6c 20 64  d Dispose(bool d
06e0: 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 7b  isposing)..    {
06f0: 0d 0a 20 20 20 20 20 20 20 20 69 66 20 28 21 64  ..        if (!d
0700: 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
0710: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
0720: 20 2f 2f 69 66 20 28 64 69 73 70 6f 73 69 6e 67   //if (disposing
0730: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  )..            /
0740: 2f 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  /{..            
0750: 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  //    //////////
0760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
0780: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 2f 2f          //    //
0790: 20 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64   dispose managed
07a0: 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e   resources here.
07b0: 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
07c0: 2f 2f 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  //    //////////
07d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
07e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
07f0: 20 20 20 20 20 20 20 20 2f 2f 7d 0d 0a 0d 0a 20          //}.... 
0800: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
0810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0830: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  /..            /
0840: 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61  / release unmana
0850: 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65  ged resources he
0860: 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20  re.....         
0870: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
0880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
08a0: 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 65           dispose
08b0: 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  d = true;..     
08c0: 20 20 20 7d 0d 0a 20 20 20 20 7d 0d 0a 20 20 20     }..    }..   
08d0: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
08e0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
08f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0940: 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65 67 69 6f  //....    #regio
0950: 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20  n Destructor..  
0960: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0970: 0a 20 20 20 20 2f 2f 2f 20 43 6c 65 61 6e 73 20  .    /// Cleans 
0980: 75 70 20 72 65 73 6f 75 72 63 65 73 20 61 73 73  up resources ass
0990: 6f 63 69 61 74 65 64 20 77 69 74 68 20 74 68 65  ociated with the
09a0: 20 63 75 72 72 65 6e 74 20 69 6e 73 74 61 6e 63   current instanc
09b0: 65 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75  e...    /// </su
09c0: 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 7e 53 51 4c  mmary>..    ~SQL
09d0: 69 74 65 46 61 63 74 6f 72 79 28 29 0d 0a 20 20  iteFactory()..  
09e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 44 69 73    {..        Dis
09f0: 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20  pose(false);..  
0a00: 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67    }..    #endreg
0a10: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f  ion....    /////
0a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
0a80: 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d    /// <summary>.
0a90: 0a 20 20 20 20 2f 2f 2f 20 54 68 69 73 20 65 76  .    /// This ev
0aa0: 65 6e 74 20 69 73 20 72 61 69 73 65 64 20 77 68  ent is raised wh
0ab0: 65 6e 65 76 65 72 20 53 51 4c 69 74 65 20 72 61  enever SQLite ra
0ac0: 69 73 65 73 20 61 20 6c 6f 67 67 69 6e 67 20 65  ises a logging e
0ad0: 76 65 6e 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 4e  vent...    /// N
0ae0: 6f 74 65 20 74 68 61 74 20 74 68 69 73 20 73 68  ote that this sh
0af0: 6f 75 6c 64 20 62 65 20 73 65 74 20 61 73 20 6f  ould be set as o
0b00: 6e 65 20 6f 66 20 74 68 65 20 66 69 72 73 74 20  ne of the first 
0b10: 74 68 69 6e 67 73 20 69 6e 20 74 68 65 0d 0a 20  things in the.. 
0b20: 20 20 20 2f 2f 2f 20 61 70 70 6c 69 63 61 74 69     /// applicati
0b30: 6f 6e 2e 20 20 54 68 69 73 20 65 76 65 6e 74 20  on.  This event 
0b40: 69 73 20 70 72 6f 76 69 64 65 64 20 66 6f 72 20  is provided for 
0b50: 62 61 63 6b 77 61 72 64 20 63 6f 6d 70 61 74 69  backward compati
0b60: 62 69 6c 69 74 79 20 6f 6e 6c 79 2e 0d 0a 20 20  bility only...  
0b70: 20 20 2f 2f 2f 20 4e 65 77 20 63 6f 64 65 20 73    /// New code s
0b80: 68 6f 75 6c 64 20 75 73 65 20 74 68 65 20 3c 73  hould use the <s
0b90: 65 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 4c  ee cref="SQLiteL
0ba0: 6f 67 22 20 2f 3e 20 63 6c 61 73 73 20 69 6e 73  og" /> class ins
0bb0: 74 65 61 64 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  tead...    /// <
0bc0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 70  /summary>..    p
0bd0: 75 62 6c 69 63 20 65 76 65 6e 74 20 53 51 4c 69  ublic event SQLi
0be0: 74 65 4c 6f 67 45 76 65 6e 74 48 61 6e 64 6c 65  teLogEventHandle
0bf0: 72 20 4c 6f 67 0d 0a 20 20 20 20 7b 0d 0a 20 20  r Log..    {..  
0c00: 20 20 20 20 61 64 64 20 7b 20 43 68 65 63 6b 44      add { CheckD
0c10: 69 73 70 6f 73 65 64 28 29 3b 20 53 51 4c 69 74  isposed(); SQLit
0c20: 65 4c 6f 67 2e 4c 6f 67 20 2b 3d 20 76 61 6c 75  eLog.Log += valu
0c30: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 72 65 6d 6f  e; }..      remo
0c40: 76 65 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  ve { CheckDispos
0c50: 65 64 28 29 3b 20 53 51 4c 69 74 65 4c 6f 67 2e  ed(); SQLiteLog.
0c60: 4c 6f 67 20 2d 3d 20 76 61 6c 75 65 3b 20 7d 0d  Log -= value; }.
0c70: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
0c80: 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20  / <summary>..   
0c90: 20 2f 2f 2f 20 53 74 61 74 69 63 20 69 6e 73 74   /// Static inst
0ca0: 61 6e 63 65 20 6d 65 6d 62 65 72 20 77 68 69 63  ance member whic
0cb0: 68 20 72 65 74 75 72 6e 73 20 61 6e 20 69 6e 73  h returns an ins
0cc0: 74 61 6e 63 65 64 20 3c 73 65 65 20 63 72 65 66  tanced <see cref
0cd0: 3d 22 53 51 4c 69 74 65 46 61 63 74 6f 72 79 22  ="SQLiteFactory"
0ce0: 20 2f 3e 20 63 6c 61 73 73 2e 0d 0a 20 20 20 20   /> class...    
0cf0: 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a  /// </summary>..
0d00: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
0d10: 63 20 72 65 61 64 6f 6e 6c 79 20 53 51 4c 69 74  c readonly SQLit
0d20: 65 46 61 63 74 6f 72 79 20 49 6e 73 74 61 6e 63  eFactory Instanc
0d30: 65 20 3d 20 6e 65 77 20 53 51 4c 69 74 65 46 61  e = new SQLiteFa
0d40: 63 74 6f 72 79 28 29 3b 0d 0a 0d 0a 20 20 20 20  ctory();....    
0d50: 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20  /// <summary>.. 
0d60: 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20 61     /// Creates a
0d70: 6e 64 20 72 65 74 75 72 6e 73 20 61 20 6e 65 77  nd returns a new
0d80: 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c 69   <see cref="SQLi
0d90: 74 65 43 6f 6d 6d 61 6e 64 22 20 2f 3e 20 6f 62  teCommand" /> ob
0da0: 6a 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ject...    /// <
0db0: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
0dc0: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
0dd0: 6e 65 77 20 6f 62 6a 65 63 74 2e 3c 2f 72 65 74  new object.</ret
0de0: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  urns>..    publi
0df0: 63 20 6f 76 65 72 72 69 64 65 20 44 62 43 6f 6d  c override DbCom
0e00: 6d 61 6e 64 20 43 72 65 61 74 65 43 6f 6d 6d 61  mand CreateComma
0e10: 6e 64 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  nd()..    {..   
0e20: 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
0e30: 28 29 3b 0d 0a 20 20 20 20 20 20 72 65 74 75 72  ();..      retur
0e40: 6e 20 6e 65 77 20 53 51 4c 69 74 65 43 6f 6d 6d  n new SQLiteComm
0e50: 61 6e 64 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d  and();..    }...
0e60: 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72  .    /// <summar
0e70: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 72 65 61  y>..    /// Crea
0e80: 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73 20  tes and returns 
0e90: 61 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66 3d  a new <see cref=
0ea0: 22 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 42 75  "SQLiteCommandBu
0eb0: 69 6c 64 65 72 22 20 2f 3e 20 6f 62 6a 65 63 74  ilder" /> object
0ec0: 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d  ...    /// </sum
0ed0: 6d 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  mary>..    /// <
0ee0: 72 65 74 75 72 6e 73 3e 54 68 65 20 6e 65 77 20  returns>The new 
0ef0: 6f 62 6a 65 63 74 2e 3c 2f 72 65 74 75 72 6e 73  object.</returns
0f00: 3e 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 6f 76  >..    public ov
0f10: 65 72 72 69 64 65 20 44 62 43 6f 6d 6d 61 6e 64  erride DbCommand
0f20: 42 75 69 6c 64 65 72 20 43 72 65 61 74 65 43 6f  Builder CreateCo
0f30: 6d 6d 61 6e 64 42 75 69 6c 64 65 72 28 29 0d 0a  mmandBuilder()..
0f40: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 43 68 65      {..      Che
0f50: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20  ckDisposed();.. 
0f60: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20       return new 
0f70: 53 51 4c 69 74 65 43 6f 6d 6d 61 6e 64 42 75 69  SQLiteCommandBui
0f80: 6c 64 65 72 28 29 3b 0d 0a 20 20 20 20 7d 0d 0a  lder();..    }..
0f90: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d 61  ..    /// <summa
0fa0: 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 72 65  ry>..    /// Cre
0fb0: 61 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e 73  ates and returns
0fc0: 20 61 20 6e 65 77 20 3c 73 65 65 20 63 72 65 66   a new <see cref
0fd0: 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74 69  ="SQLiteConnecti
0fe0: 6f 6e 22 20 2f 3e 20 6f 62 6a 65 63 74 2e 0d 0a  on" /> object...
0ff0: 20 20 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72      /// </summar
1000: 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74  y>..    /// <ret
1010: 75 72 6e 73 3e 54 68 65 20 6e 65 77 20 6f 62 6a  urns>The new obj
1020: 65 63 74 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a  ect.</returns>..
1030: 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72      public overr
1040: 69 64 65 20 44 62 43 6f 6e 6e 65 63 74 69 6f 6e  ide DbConnection
1050: 20 43 72 65 61 74 65 43 6f 6e 6e 65 63 74 69 6f   CreateConnectio
1060: 6e 28 29 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20  n()..    {..    
1070: 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
1080: 29 3b 0d 0a 20 20 20 20 20 20 72 65 74 75 72 6e  );..      return
1090: 20 6e 65 77 20 53 51 4c 69 74 65 43 6f 6e 6e 65   new SQLiteConne
10a0: 63 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 7d 0d  ction();..    }.
10b0: 0a 0d 0a 20 20 20 20 2f 2f 2f 20 3c 73 75 6d 6d  ...    /// <summ
10c0: 61 72 79 3e 0d 0a 20 20 20 20 2f 2f 2f 20 43 72  ary>..    /// Cr
10d0: 65 61 74 65 73 20 61 6e 64 20 72 65 74 75 72 6e  eates and return
10e0: 73 20 61 20 6e 65 77 20 3c 73 65 65 20 63 72 65  s a new <see cre
10f0: 66 3d 22 53 51 4c 69 74 65 43 6f 6e 6e 65 63 74  f="SQLiteConnect
1100: 69 6f 6e 53 74 72 69 6e 67 42 75 69 6c 64 65 72  ionStringBuilder
1110: 22 20 2f 3e 20 6f 62 6a 65 63 74 2e 0d 0a 20 20  " /> object...  
1120: 20 20 2f 2f 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e    /// </summary>
1130: 0d 0a 20 20 20 20 2f 2f 2f 20 3c 72 65 74 75 72  ..    /// <retur
1140: 6e 73 3e 54 68 65 20 6e 65 77 20 6f 62 6a 65 63  ns>The new objec
1150: 74 2e 3c 2f 72 65 74 75 72 6e 73 3e 0d 0a 20 20  t.</returns>..  
1160: 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
1170: 65 20 44 62 43 6f 6e 6e 65 63 74 69 6f 6e 53 74  e DbConnectionSt
1180: 72 69 6e 67 42 75 69 6c 64 65 72 20 43 72 65 61  ringBuilder Crea
1190: 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72 69  teConnectionStri
11a0: 6e 67 42 75 69 6c 64 65 72 28 29 0d 0a 20 20 20  ngBuilder()..   
11b0: 20 7b 0d 0a 20 20 20 20 20 20 43 68 65 63 6b 44   {..      CheckD
11c0: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20  isposed();..    
11d0: 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53 51 4c    return new SQL
11e0: 69 74 65 43 6f 6e 6e 65 63 74 69 6f 6e 53 74 72  iteConnectionStr
11f0: 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 20  ingBuilder();.. 
1200: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 20     }....    /// 
1210: 3c 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  <summary>..    /
1220: 2f 2f 20 43 72 65 61 74 65 73 20 61 6e 64 20 72  // Creates and r
1230: 65 74 75 72 6e 73 20 61 20 6e 65 77 20 3c 73 65  eturns a new <se
1240: 65 20 63 72 65 66 3d 22 53 51 4c 69 74 65 44 61  e cref="SQLiteDa
1250: 74 61 41 64 61 70 74 65 72 22 20 2f 3e 20 6f 62  taAdapter" /> ob
1260: 6a 65 63 74 2e 0d 0a 20 20 20 20 2f 2f 2f 20 3c  ject...    /// <
1270: 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20 20 20 2f  /summary>..    /
1280: 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54 68 65 20  // <returns>The 
1290: 6e 65 77 20 6f 62 6a 65 63 74 2e 3c 2f 72 65 74  new object.</ret
12a0: 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75 62 6c 69  urns>..    publi
12b0: 63 20 6f 76 65 72 72 69 64 65 20 44 62 44 61 74  c override DbDat
12c0: 61 41 64 61 70 74 65 72 20 43 72 65 61 74 65 44  aAdapter CreateD
12d0: 61 74 61 41 64 61 70 74 65 72 28 29 0d 0a 20 20  ataAdapter()..  
12e0: 20 20 7b 0d 0a 20 20 20 20 20 20 43 68 65 63 6b    {..      Check
12f0: 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20  Disposed();..   
1300: 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53 51     return new SQ
1310: 4c 69 74 65 44 61 74 61 41 64 61 70 74 65 72 28  LiteDataAdapter(
1320: 29 3b 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  );..    }....   
1330: 20 2f 2f 2f 20 3c 73 75 6d 6d 61 72 79 3e 0d 0a   /// <summary>..
1340: 20 20 20 20 2f 2f 2f 20 43 72 65 61 74 65 73 20      /// Creates 
1350: 61 6e 64 20 72 65 74 75 72 6e 73 20 61 20 6e 65  and returns a ne
1360: 77 20 3c 73 65 65 20 63 72 65 66 3d 22 53 51 4c  w <see cref="SQL
1370: 69 74 65 50 61 72 61 6d 65 74 65 72 22 20 2f 3e  iteParameter" />
1380: 20 6f 62 6a 65 63 74 2e 0d 0a 20 20 20 20 2f 2f   object...    //
1390: 2f 20 3c 2f 73 75 6d 6d 61 72 79 3e 0d 0a 20 20  / </summary>..  
13a0: 20 20 2f 2f 2f 20 3c 72 65 74 75 72 6e 73 3e 54    /// <returns>T
13b0: 68 65 20 6e 65 77 20 6f 62 6a 65 63 74 2e 3c 2f  he new object.</
13c0: 72 65 74 75 72 6e 73 3e 0d 0a 20 20 20 20 70 75  returns>..    pu
13d0: 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 44 62  blic override Db
13e0: 50 61 72 61 6d 65 74 65 72 20 43 72 65 61 74 65  Parameter Create
13f0: 50 61 72 61 6d 65 74 65 72 28 29 0d 0a 20 20 20  Parameter()..   
1400: 20 7b 0d 0a 20 20 20 20 20 20 43 68 65 63 6b 44   {..      CheckD
1410: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20  isposed();..    
1420: 20 20 72 65 74 75 72 6e 20 6e 65 77 20 53 51 4c    return new SQL
1430: 69 74 65 50 61 72 61 6d 65 74 65 72 28 29 3b 0d  iteParameter();.
1440: 0a 20 20 20 20 7d 0d 0a 20 20 7d 0d 0a 23 65 6e  .    }..  }..#en
1450: 64 69 66 0d 0a 7d 0d 0a                          dif..}..